java和sql生成时间维度数据

这篇具有很好参考价值的文章主要介绍了java和sql生成时间维度数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JAVA:
POM依赖:
 

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.2</version>
        </dependency>

代码:

package com.kone.kcdp.common;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup;

import java.util.List;

public class DateGenerator {

    private static final String DATE_STD_FORMAT = "yyyy-MM-dd";
    private static final String DATE_TRIM_FORMAT = "yyyyMMdd";
    private static final String DATE_CN_FORMAT = "yyyy年M月d日";
    private static final String MONTH_STD_FORMAT = "yyyy-MM";
    private static final String MONTH_TRIM_FORMAT = "yyyyMM";
    private static final String MONTH_CN_FORMAT = "yyyy年M月";
    private static final String YEAR_STD_FORMAT = "yyyy";
    private static final String YEAR_CN_FORMAT = "yyyy年";

    public static void dateTemplate() {

        List<DateTime> dateTimes = DateUtil.rangeToList(DateUtil.date(963843260000l), DateUtil.date(), DateField.DAY_OF_MONTH);
        dateTimes.forEach(dateTime -> {
            //日
            String dateStd = DateUtil.format(dateTime, DATE_STD_FORMAT);
            String dateTrim = DateUtil.format(dateTime, DATE_TRIM_FORMAT);
            String dateCn = DateUtil.format(dateTime, DATE_CN_FORMAT);
            String beginOfDay = DateUtil.beginOfDay(dateTime).toString();
            String endOfDay = DateUtil.endOfDay(dateTime).toString();
            int age = DateUtil.ageOfNow(dateTime);

            //周
            int weekOfMonth = DateUtil.weekOfMonth(dateTime);
            int weekOfYear = DateUtil.weekOfYear(dateTime);
            int dayOfWeek = DateUtil.dayOfWeek(dateTime);
            String week = DateUtil.dayOfWeekEnum(dateTime).toString();
            String beginDateOfWeek = DateUtil.format(DateUtil.beginOfWeek(dateTime), DATE_STD_FORMAT);
            String endDateOfWeek = DateUtil.format(DateUtil.endOfWeek(dateTime), DATE_STD_FORMAT);


            //月
            String monthStd = DateUtil.format(dateTime, MONTH_STD_FORMAT);
            String monthTrim = DateUtil.format(dateTime, MONTH_TRIM_FORMAT);
            String monthCn = DateUtil.format(dateTime, MONTH_CN_FORMAT);
            String monthEn = DateUtil.monthEnum(dateTime).toString();
            String beginDateOfMonth = DateUtil.format(DateUtil.beginOfMonth(dateTime), DATE_STD_FORMAT);
            String endDateOfMonth = DateUtil.format(DateUtil.endOfMonth(dateTime), DATE_STD_FORMAT);


            //季度
            String quarterId = DateUtil.yearAndQuarter(dateTime);
            int quarterNum = DateUtil.quarter(dateTime);
            String quarterEn = DateUtil.quarterEnum(dateTime).toString();
            String quarterCn;
            String quarterYearCn = quarterId.substring(0, 4) + "年第" + quarterId.substring(4, 5) + "季度";
            String quarterYearEn = quarterId.substring(0, 4) + " " + quarterEn;
            switch (quarterEn) {
                case "Q1":
                    quarterCn = "第一季度";
                    break;
                case "Q2":
                    quarterCn = "第二季度";
                    break;
                case "Q3":
                    quarterCn = "第三季度";
                    break;
                default:
                    quarterCn = "第四季度";
                    break;
            }
            String beginDateOfQuarter = DateUtil.format(DateUtil.beginOfQuarter(dateTime), DATE_STD_FORMAT);
            String endDateOfQuarter = DateUtil.format(DateUtil.endOfQuarter(dateTime), DATE_STD_FORMAT);

            //年
            String yearStd = DateUtil.format(dateTime, YEAR_STD_FORMAT);
            String yearCn = DateUtil.format(dateTime, YEAR_CN_FORMAT);
            String chineseZodiac = DateUtil.getChineseZodiac(Integer.parseInt(yearStd));
            String beginDateOfYear = DateUtil.format(DateUtil.beginOfYear(dateTime), DATE_STD_FORMAT);
            String endDateOfYear = DateUtil.format(DateUtil.endOfYear(dateTime), DATE_STD_FORMAT);


        });


    }
}

SQL:文章来源地址https://www.toymoban.com/news/detail-670296.html


-- CREATE EXTERNAL TABLE `dim.dim_date_base`(
--   `nature_date` string COMMENT '自然日期', 
--   `dim_date` bigint COMMENT '维度日期', 
--   `year` int COMMENT '年', 
--   `month` int COMMENT '月', 
--   `week` int COMMENT '周', 
--   `week_start` string COMMENT '周开始', 
--   `week_end` string COMMENT '周结束', 
--   `week_of_year` int COMMENT '周所属年', 
--   `month_start` string COMMENT '月开始', 
--   `month_end` string COMMENT '月结束', 
--   `is_last_day_of_month` int COMMENT '是否是最后天所属月', 
--   `month_date_cnt` int COMMENT '月日期总数', 
--   `day_of_month` int COMMENT '天所属月', 
--   `day_of_year` int COMMENT '天所属年', 
--   `is_week_end` int COMMENT '是否是周结束', 
--   `quarter` int COMMENT '所属季度')
-- COMMENT '日期域'




WITH
  DateArray AS (
    SELECT
      sequence(
       to_date('2000-01-01', 'yyyy-MM-dd'),
       to_date('2100-12-31', 'yyyy-MM-dd'),
        interval 1 day
      ) AS dateArray
  )
  
  insert into table dim.dim_date_base
  
SELECT
  dateLog `date` , 
  CAST(regexp_replace(dateLog, '-', '') AS INT) dt,
 YEAR(dateLog) AS `year`,
 MONTH(dateLog) AS `month`,
    DAYOFWEEK(date_add(dateLog,-1)) AS `week`,
    date_add(dateLog,(DAYOFWEEK(dateLog-1)-1)*-1) week_begin_date ,
    date_add(dateLog, 7-DAYOFWEEK(dateLog-1) ) week_end_date ,
    WEEKOFYEAR(dateLog)  week_of_year,
    concat(substr(dateLog,0,8),'01')  month_begin_date,
     last_day(dateLog)  month_end_date,
     if(dateLog=last_day(dateLog),1,0) is_last_day_of_month ,
     day(last_day(dateLog)) month_date_cnt ,
      day(dateLog) day_of_month ,
      dayofyear(dateLog) day_of_year,
      if( DAYOFWEEK(dateLog) in(1,7),1,0) is_week_end,
      quarter(dateLog) `quarter`
FROM
  (
    SELECT
      explode(dateArray) AS dateLog
    FROM
      DateArray
  ) t

到了这里,关于java和sql生成时间维度数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用java.sql包--访问和处理数据库数据

    The java.sql package in Java provides the API for interacting with relational databases using JDBC (Java Database Connectivity). JDBC is a standard Java API that allows Java programs to connect to and interact with various database management systems (DBMS) using SQL (Structured Query Language). The java.sql package contains several important interfaces and

    2024年02月10日
    浏览(30)
  • 通过Java连接Sql Server数据库

    JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库。JDBC的本质其实是官方定义的一套操作所有关系型数据库的规则,也就是接口。 微软官方jdbc下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=11774 下载之后解压到相

    2024年01月17日
    浏览(37)
  • Java项目中,MySQL数据库中的时间字段用哪个?

    1.timestamp:                 自带时区属性,该类型的字段会随着服务器时区的变化而变化,自动换算成相应时区的时间,存储形式为:yyyy-MM-dd HH:mm:ss,对应的Java类型为java.sql.Timestamp                 缺点:只能存储到2038年的时间。 2.datetime:                 不具备时区

    2024年02月10日
    浏览(33)
  • Java连接SQL Server数据库的详细操作流程

    1.1 JDK版本查看 win + r输入cmd,命令窗口输入java --version 1.2 SQL Server官网下载驱动 SQL Server驱动下载直达地址 下载完成后解压到自己熟悉的目录,不出意外的话你会看到以下文件 1.3 加载驱动类 1.4 eclipse导入驱动jar包 目录结构 右键当前工程文件,选择 build path ,然后选择 Add Exter

    2024年02月03日
    浏览(53)
  • java代码实现自动生成数据库表er图

    最近有同事看到字节跳动产品设计文档里有数据库表er图。就想问问又没有现成的工具也给直接生成一个er图,经查找验证发现并没有。因为现在表关系都是用的逻辑外键而非物理外键约束的,所以像navicat等工具就算生成了也没有描述关系的连接线。那么为了满足需求,这边

    2024年02月19日
    浏览(31)
  • 学生信息管理系统 Java+SQL Server 数据库原理课程

    该项目实现了图形化界面的数据库的登录,以及对数据库中表的增删查改。 正好老师布置了相关作业,通过Java 连接 SQL Server 数据库,就写一个学生管理系统。 jdk8 数据库连接通过sqljdbc6.0 图形化界面用swing 目录 1、Java 连接SQL Server数据库 2、准备数据库 3、登录界面 要求:

    2024年02月09日
    浏览(57)
  • JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范

    7、【强制】如果存储的字符串长度几乎相等,使用 char定长字符串类型 8、【强制】varchar是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张 表,用主键来对应,避免影响其它字段索引效率。 9、【强制】表

    2024年04月10日
    浏览(40)
  • Java从入门到精通24==》数据库、SQL基本语句、DDL语句

    2023.8.27 数据库是一个电子化储存数据的系统,它能够以结构化形式组织、存储和管理数据,使得数据的访问、操作和管理变得更为高效、可靠和安全 数据库通常包括数据、数据结构、查询语言、数据存储和检索引擎等多个组成部分,可分为关系型数据库、非关系型数据库等

    2024年02月11日
    浏览(36)
  • Java一般用于postgis空间数据库通用的增删查改sql命令

    目录 1 增加 2 删除 3 查询 4 更新 \\\"public\\\".\\\"JGSQGW_Geo\\\"为某模式下得表  一般postgrel有这样的设计模式

    2024年02月13日
    浏览(37)
  • 实战Java springboot 采用Flink CDC操作SQL Server数据库获取增量变更数据

    目录 前言: 1、springboot引入依赖: 2、yml配置文件 3、创建SQL server CDC变更数据监听器 4、反序列化数据,转为变更JSON对象 5、CDC 数据实体类 6、自定义ApplicationContextUtil 7、自定义sink 交由spring管理,处理变更数据         我的场景是从SQL Server数据库获取指定表的增量数据,查

    2024年02月10日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包