SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中

devtools/2025/1/21 11:32:39/

几种生成日期表的方法
如何用SQL语句生成日期表呢?
如何用MySQL语句生成日期表呢?
如何用DAX语句生成日期表呢?

1. MySQL生成日期表

1.1 日期格式:yyyy-MM-dd 字符型 2024-01-02

-- 生成日期表
WITH RECURSIVE temp_dateTable AS (SELECT '2023-01-01' AS datekeyUNION ALLSELECT DATE_ADD(datekey, INTERVAL 1 DAY)FROM temp_dateTableWHERE datekey < '2023-12-31'
)
SELECT datekey FROM temp_dateTable
;
/*
datekey
2023-01-01
2023-01-02
2023-01-03
2023-01-04
*/

1.2 日期格式:yyyyMMdd 数字型 20240102

-- 生成日期表
WITH RECURSIVE temp_dateTable AS (SELECT 20240101 AS datekeyUNION ALLSELECT date_format(date_add(CONVERT(datekey, CHAR),interval 1 day), "%Y%m%d")+0FROM temp_dateTableWHERE datekey < 20240117
)
selectdt.datekey
from temp_dateTable dt
;
/*
datekey
20240101
20240102
20240103
20240104
*/

1.3 MySQL生成的日期表插入到实体表(临时表)

-- 删除表
DROP TABLE IF EXISTS create_dateTable;-- 创建表
CREATE TABLE create_dateTable (datekey DATE PRIMARY KEY
);-- 将查找出来的临时表插入到新创建的实体表
INSERT INTO create_dateTable
WITH RECURSIVE temp_dateTable AS (SELECT '2023-01-01' AS datekeyUNION ALLSELECT DATE_ADD(datekey, INTERVAL 1 DAY)FROM temp_dateTableWHERE datekey < '2023-12-31'
)
SELECT datekey FROM temp_dateTable;
-- 查找日期
SELECT * FROM create_dateTable;

2. SQL生成日期表

2.1 日期格式:yyyy-MM-dd 字符型 2024-01-02

DECLARE @BeginDate DATE, @EndDate DATE;
SET @BeginDate = '2023-09-01'
SET @EndDate = '2023-12-01'
;
WITH cteDate AS (SELECT @BeginDate AS CalendarDateUNION ALLSELECT DATEADD(DAY,1,CalendarDate)FROM cteDateWHERE CalendarDate <= @EndDate
)
SELECTCalendarDate DateKey,(DATEPART(YEAR,CalendarDate) * 10000) + (DATEPART(MONTH,CalendarDate) * 100) +DATEPART(DAY,CalendarDate) CalendarDate,DATEPART(YEAR,CalendarDate) AS Year,DATEPART(MONTH,CalendarDate) AS MonthNumber,DATENAME(MONTH,CalendarDate) AS Month,DATENAME(QUARTER,CalendarDate) AS Quarter, format(CalendarDate ,'yyyyMM') YeamMonth
FROM cteDate
OPTION (MAXRECURSION 0)

2.2 日期格式:yyyyMMdd 数字型 20240102

DECLARE @BeginDate INT, @EndDate INT;
SET @BeginDate = 20240101; 
SET @EndDate = 20240117;   
WITH cteDate AS (SELECT @BeginDate AS CalendarDateUNION ALLSELECT format(dateadd(day, 1, cast(CalendarDate as varchar(8))), 'yyyyMMdd')+0FROM cteDateWHERE CalendarDate < @EndDate
)
selectCalendarDate
from cteDate
/*
CalendarDate
20240101
20240102
20240103
20240104
*/

2.3 SQL生成的日期表插入到实体表(临时表)

DECLARE @BeginDate DATE, @EndDate DATE;
SET @BeginDate = '2023-09-01'
SET @EndDate = '2023-12-01'
;
WITH cteDate AS (SELECT @BeginDate AS CalendarDateUNION ALLSELECT DATEADD(DAY,1,CalendarDate)FROM cteDateWHERE CalendarDate <= @EndDate
)
SELECTCalendarDate DateKey,(DATEPART(YEAR,CalendarDate) * 10000) + (DATEPART(MONTH,CalendarDate) * 100) +DATEPART(DAY,CalendarDate) CalendarDate,DATEPART(YEAR,CalendarDate) AS Year,DATEPART(MONTH,CalendarDate) AS MonthNumber,DATENAME(MONTH,CalendarDate) AS Month,DATENAME(QUARTER,CalendarDate) AS Quarter, format(CalendarDate ,'yyyyMM') YeamMonthINTO #temp_dateTable
FROM cteDate
OPTION (MAXRECURSION 0);
SELECT * FROM #temp_dateTable

3. DAX日期表生成 自动日期表

EVALUATE
ADDCOLUMNS (CALENDARAUTO(),"Year", YEAR ( [Date] ),"Quarter No", QUARTER ( [Date] ),"Quarter", "Q" & QUARTER ( [Date] ),"Month No", MONTH ( [Date] ),"Month", FORMAT ( [Date], "MM" ),"Day", DAY ( [Date] )
)

3.2 DAX日期表生成 指定日期表

EVALUATE
ADDCOLUMNS (CALENDAR ( DATE ( 2023, 11, 01 ), DATE ( 2023, 12, 31 ) ),"Year", YEAR ( [Date] ),"Quarter No", QUARTER ( [Date] ),"Quarter", "Q" & QUARTER ( [Date] ),"Month No", MONTH ( [Date] ),"Month", FORMAT ( [Date], "MM" ),"Day", DAY ( [Date] )
)

日期表生成


http://www.ppmy.cn/devtools/152338.html

相关文章

Ping32 vs IPguard:企业防泄密软件对比,谁更胜一筹?

在信息化时代&#xff0c;数据安全是企业生存与发展的基石。防泄密软件作为保护企业数据的重要工具&#xff0c;在文件加密、权限控制、行为审计等方面发挥着关键作用。在众多解决方案中&#xff0c;Ping32与IPguard是国内市场上备受关注的两款产品。那么&#xff0c;这两款软件…

动态规划练习六(回文串问题)

一、解题心得 遇到回文串问题&#xff0c;一个最基本的思路就是要先知道区间 [i, j] 的字符串是不是回文串&#xff0c;这非常非常重要&#xff01;&#xff01;&#xff01;后面我们慢慢体会。 所以首要任务是怎么求得 [i, j] 区间的回文信息&#xff0c;这里会用一道例题解…

以太网实战AD采集上传上位机——FPGA学习笔记27

一、设计目标 使用FPGA实现AD模块驱动采集模拟电压&#xff0c;通过以太网上传到电脑上位机。 二、框架设计 数据位宽转换模块&#xff08;ad_10bit_to_16bit&#xff09;&#xff1a;为了方便数据传输&#xff0c;数据位宽转换模块实现了将十位的 AD 数据转换成十六位&#…

【Linux】打破Linux神秘的面纱

个人主页~ 在开始学习的时候我们一定会对Linux产生抵触心理&#xff0c;我也是这样的&#xff0c;通过一点一点的学习&#xff0c;到初步会使用阶段&#xff0c;我们就可以打破这种心理&#xff0c;开始逐渐掌握&#xff0c;所以我们这篇文章将在一个宏观的角度上看待Linux&…

AI刷题-病毒在封闭空间中的传播时间

目录 问题描述 输入格式 输出格式 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 代码实现&#xff1a; 1.初始化&#xff1a; 2.设置边界条件&#xff1a; 3.判断 4.更新&#xff1a; 5.返回 最终的实现代码如下&#xff1a; 运行结果&#xff1a; …

vmware17.5 - 解决ubuntu长按按键会导致图形界面卡死的情况

在vmware上安装的ubuntu一直存在一个问题&#xff0c;长按按键会导致ubuntu图形界面卡死&#xff0c;不能自己恢复&#xff0c;只能关机重启&#xff0c;而且每次都能复现。搞得每次敲代码&#xff0c;动不动就卡死&#xff0c;重启后说不定还会丢代码&#xff0c;真服了。 以…

< OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源

VPS 配置 主机&#xff1a;vCPU x2, 512MB, 20GB位置&#xff1a;阿里云&#xff0c;日本.东京OS&#xff1a; ubuntu24.20 原因&#xff1a; 这篇是操作过程的记录文章。 2 个月前&#xff0c; 在阿里云买了台 vps 。当时本想放到韩国&#xff0c;因为它离北京近。 但最便…

BERT和Transformer模型有什么区别

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;和Transformer都是自然语言处理&#xff08;NLP&#xff09;领域的重要模型&#xff0c;它们之间的区别主要体现在以下几个方面&#xff1a; 模型定位 Transformer&#xff1a;严格来说并…