sql server常见日期时间函数

-- 常用时间函数GETDATE()
SELECT GETDATE(); -- 获取当前日期,如2024-06-17 16:23:07.253
SELECT YEAR(GetDate()) as '年';    --  YEAR ( a.IEDate ) = YEAR ( c.RateDate ) 
SELECT MONTH(GetDate()) as '月';
SELECT DAY(GetDate()) as '日';

-- GETDATE+DATEPART() 函数用于返回日期/时间的单独部分,返回整数。获取年、月、日、小时、分钟等。
SELECT DatePart(YY,GETDATE())as '年';  
SELECT DatePart(mm,GETDATE())as '月';
SELECT DatePart(dd,GETDATE())as '日';
SELECT DatePart(hh,GETDATE())as '时';

-- GETDATE+FORMAT转化时间格式
select FORMAT(GetDate(), 'yyyy-MM' ) CreateMonth--如2024-09-14 
select FORMAT(GetDate(), 'hhmmss' ) CreateMonth--如023859(HH是24进制,hh是12进制) 
select FORMAT(GetDate(), 'yyyyMMdd HHmmss' ) CreateMonth--如20241205 143833 

select FORMAT(GetDate(), 'yyyy-MM-dd HH:mm:ss' ) CreateMonth--如2025-04-11 10:24:07

 

-- GETDATE+DateName函数返回指定日期的指定部分,返回字符串。获取年、月、日、星期、周数、时、分、秒;
SELECT DateName(YEAR,GetDate()) as '年';
SELECT DateName(MONTH,GetDate()) as '月';
SELECT DateName(DAY,GetDate()) as '日';
SELECT DateName(hour,GetDate()) as '时';
SELECT DateName(minute,GetDate()) as '分';
SELECT DateName(second,GetDate()) as '秒';
SELECT DateName(weekday,GetDate()) as '星期'; --如星期四
SELECT DateName(quarter,GetDate()) as '第几季度';--如4
SELECT DateName(week,GetDate()) as '一年中的第几周';--如49
SELECT DateName(DAYOFYEAR,GetDate()) as '一年中的第几天'; 


-- GETDATE+DATEADD()函数,在日期中添加或减去指定的时间间隔。年、月、日+1
SELECT DATEADD(year,1,GETDATE()) as 明年今日; -- 如2025-12-05 14:22:36.713
SELECT DATEADD(year,-1,GETDATE()) as 去年今日;
SELECT DATEADD(month,+1,GETDATE()) as 下月今日; 
SELECT DATEADD(day,30,GETDATE()) as XX天后;  

PS:举例

and ModifyDate >= DATEADD(year,-1,GETDATE()) --年
and ModifyDate >= DATEADD(quarter,-1,GETDATE()) --季
and ModifyDate >= DATEADD(month,-30,GETDATE()) --月
and ModifyDate >= DATEADD(day,-30,GETDATE()) --日
and ModifyDate >= DATEADD(hour,-30,GETDATE()) --时
and ModifyDate >= DATEADD(minute,-30,GETDATE()) --分
and ModifyDate >= DATEADD(second,-30,GETDATE()) --秒

 

-- GETDATE+DATEDIFF()函数返回两个指定日期之间间隔的时间
-- 1)与当前日期对比
SELECT DATEDIFF(year,'2023-01-01' ,GETDATE()) as "间隔年数"; --如1
SELECT DATEDIFF(month,'2023-01-01' ,GETDATE()) as "间隔月数";
SELECT DATEDIFF(day,'2023-01-01',GETDATE()) as "间隔天数";
SELECT DATEDIFF(hh,'2024-07-23 14:55:24.130',GETDATE()) as "间隔小时数";
-- PS:判断条件用法如 where DateDiff(hh,CreateDate,getDate())<=24
-- 2)与指定日期对比
SELECT DATEDIFF(day,'2023-01-01','2023-01-09') as "间隔天数";


-- GETDATE+CONVERT()函数可以用不同的格式去显示日期/时间数据, 把日期转换为新数据类型的通用函数。
SELECT CONVERT(VARCHAR(12),GETDATE(),102); -- 2024.06.17
SELECT CONVERT(VARCHAR(10),GETDATE(),121); -- 2024-06-17
SELECT CONVERT(VARCHAR(23),GETDATE(),120) as 输出时间格式; -- 2024-06-17 16:24:05


-- GETDATE+EOMONTH函数返回包含指定日期所在月份的最后一天。
SELECT EOMONTH( '2023-12-01' );
SELECT EOMONTH( GETDATE() ) as 当月月末日期;

-- GETDATE+REPLACE函数使用新字符串替换字符串所有出现的子字符串
SELECT REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-','/') -- 2024/06/17 16:28:02
SELECT REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-',''),':',''),' ','') -- 20240702114932

----------- 扩展:CAST转换数据类型的常用语句如下 ----------------
SELECT CAST(10.2748 as int) as 取整;   --10
SELECT CAST(12345.22 as float);
SELECT CAST(12345.12345 as char);
SELECT CAST('2023-12-18 15:41:25' as char(16)); -- 2023-12-18 15:41 ,刚好16字符
SELECT CAST(GetDate() as datetime2); -- 2024-12-05 14:30:17.9833333 
SELECT CAST(NEWID() AS varchar(36)) as 随机字符串; -- 15E01CED-3C02-436F-A5C0-B7B89F746A8E
--PS:select convert(varchar(36),NEWID())  也可以格式转换,性能较差


--REPLACE+CAST时间转化为字符串
SELECT CAST(DateName(MONTH,GetDate()) AS NVARCHAR(2))+CAST(DateName(DAY,GetDate()) AS NVARCHAR(2))+REPLACE(CONVERT(varchar, GETDATE(), 108 ),':','') -- 125144222月日时分秒
SELECT CAST(DateName(MONTH,GetDate()) AS NVARCHAR(2))+RIGHT('00'+CAST(DateName(Day,GetDate()) AS NVARCHAR(2)),2)+CAST(DateName(hour,GetDate()) AS NVARCHAR(2))+CAST(DateName(minute,GetDate()) AS NVARCHAR(2)) -- 07021345月日(2位)时分

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值