常用日期转换 常用日期函数

 

1. CONVERT日期格式轉換(年月日 时分秒 毫秒):

SELECT CONVERT(VARCHAR(100), GETDATE(), 120); --【120】2011-03-15 10:55:57(yyyy-MM-dd HH:mm:ss)
SELECT CONVERT(VARCHAR(100), GETDATE(), 23); --【23】2020-09-29,【102】2020.09.29,【111】2020/09/29,【112】20200929
SELECT CONVERT(VARCHAR(100), GETDATE(), 24); --【24】11:46:53
SELECT DATEDIFF(DAY, '2020-01-01', '2020-02-02') AS '間隔時間(天數)'; --31 获取两个日期之间的间隔(天數)
SELECT GETDATE() AS '东八区时间', GETUTCDATE() AS 'UTC时间'; --获取UTC时间(UTC時間比東八區時間早8小時)

 

2. FORMAT日期格式轉換(年月日 时分秒 毫秒):

DECLARE @DATE DATETIME = GETDATE();
SELECT FORMAT(@DATE, 'D', 'EN-US')              AS 'US ENGLISH RESULT',
       FORMAT(@DATE, 'D', 'ZH-CN')             AS 'SIMPLIFIED CHINESE (PRC) RESULT',
       FORMAT(@DATE, 'yyyy-MM-dd')             AS 当前日期, --注意yyyy-MM-dd大小写
       FORMAT(@DATE, 'yyyy-MM-dd HH:mm:ss')       AS 当前时间, --注意MM或者dd单双的区别
       FORMAT(@DATE, 'yyyy-MM-dd HH:mm:ss.fff')    AS 当前时间,
       FORMAT(@DATE, 'yyyyMMddHHmmss')          AS 当前时间,
       FORMAT(@DATE, 'yyyyMMddHHmmssfff')       AS 当前时间,
       FORMAT(@DATE, 'yyyy年MM月dd日 HH时mm分ss秒')  AS 中文时间;

sql server 日期转为数字时分秒 sql server日期转换函数_当前日期

 

3. 截取日期

--截取日期:截取年、截取月、截取日、截取小时、截取分钟
SELECT    YEAR(GETDATE())           AS YEAR,
       MONTH(GETDATE())          AS MONTH,
       DAY(GETDATE())            AS DAY; --2011 3 15
SELECT    DATEPART(YEAR, GETDATE())    AS YEAR,   -- 年 2018
       DATEPART(MONTH, GETDATE())   AS MONTH,  -- 月 12
       DATEPART(DAY, GETDATE())    AS DAY,    -- 日 1
       DATEPART(HOUR, GETDATE())    AS HOUR,   -- 时 21
       DATEPART(MINUTE, GETDATE())   AS MINUTE, -- 分 02
       DATEPART(SECOND, GETDATE())   AS SECOND; -- 秒 33
SELECT DATEFROMPARTS(2020, 12, 20)       AS DATEVALUE; --2020-12-20

 

4. 周相关日期

SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 0) AS 星期一;--获取本周周一的日期
SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 1) AS 星期二;--获取本周周二的日期
SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 6) AS 星期日;--获取本周周日的日期

 

5. 本相关日期

--本月第一天、最后一天、下个月最后一天 EOMONTH 语法
SELECT EOMONTH(GETDATE(), -1)                  AS '上一月最后一天',
    DATEADD(DAY, 1, EOMONTH(GETDATE(), -1)) AS '本月第一天',
    EOMONTH(GETDATE(), 0)                   AS '本月最后一天',
    EOMONTH(GETDATE(), 1)                   AS '下一月最后一天',
    EOMONTH(GETDATE(), 2)                   AS '下两月最后一天';

sql server 日期转为数字时分秒 sql server日期转换函数_当前日期_02

--本月第一天
SELECT DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0)
SELECT CONVERT(DATETIME, CONVERT(CHAR(6), GETDATE(), 112) + '01')
SELECT CONVERT(VARCHAR(7), GETDATE(), 120) + '-01'; --2011-04-01
--本月最后一天
SELECT DATEADD(MS, -3, DATEADD(MM, DATEDIFF(M, 0, GETDATE()) + 1, 0));
SELECT DATEADD(DAY, -1, CONVERT(CHAR(6), DATEADD(MONTH, 1, GETDATE()), 112) + '01');
SELECT CONVERT(VARCHAR(10), DATEADD(DAY, -1, CONVERT(CHAR(7), DATEADD(MONTH, 1, GETDATE()), 120) + '-01'), 120); --2011-04-30
--上月的最后一天
SELECT DATEADD(MS, -3, DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0));
--本月的第一个星期一
SELECT  DATEADD (WK ,   DATEDIFF ( WK ,0 , DATEADD( DD , 6- DATEPART(DAY ,GETDATE ()), GETDATE())   ),  0)

   

6. 季/年相关日期

--季度第一天 和 最后一天
SELECT DATEADD(QQ, DATEDIFF(QQ, 0, GETDATE()), 0);
--获得当前是第几季度 
SELECT DATEPART (QUARTER ,GETDATE())
--年第一天 和 最后一天
SELECT DATEADD(YY, DATEDIFF(YY, 0, GETDATE()), 0);
SELECT CONVERT (DATETIME ,CONVERT( CHAR( 4 ),GETDATE (), 120)+ '0101' )
SELECT CONVERT (DATETIME ,CONVERT( CHAR( 4 ),GETDATE (), 120)+ '1231' )
SELECT DATEADD(MS, -3, DATEADD(YY, DATEDIFF(YY, 0, GETDATE()) + 1, 0));
--去年的最后一天
SELECT DATEADD(MS, -3, DATEADD(YY, DATEDIFF(YY, 0, GETDATE()), 0));