sqlserver日期时间转换
一、常用格式转换
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2020-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2020-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 23): 2020-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2020-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 102): 2020.05.16
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 111): 2020/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20200516
Select CONVERT(varchar(100), GETDATE(), 120): 2020-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2020-05-16 10:57:49.700
二、函数
Sql Server中的日期与时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2020-10-15') --返回:2020-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2020-09-01','2020-09-18') --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
select DATEPART(month, '2020-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
select datename(weekday, '2020-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
当前时间=convert(varchar(8),getdate(),114)
select datename(dw,'2020-10-15')
select 本年第多少周=datename(week,'2020-10-15')
今天是周几=datename(weekday,'2020-10-15')
7. 时间格式:datename='2022年4月第1周',...,'2022年10月第4周',
获取月份:replace(substring(datetime,6,2),'月','')
获取周次:replace(right(datetime,3),'周','')
三、常用时间转换
--本周第一天
select dateadd(WEEK, datediff(WEEK, 0, getdate()), 0);
--本周最后一天
select dateadd(WEEK, datediff(WEEK, 0, getdate()), 6);
--上周第一天
select dateadd(WEEK, datediff(WEEK, 0, getdate())-1, 0);
--上周最后一天
select dateadd(WEEK, datediff(WEEK, 0, getdate())-1, 6);
--本月第一天
select dateadd(month, datediff(month, 0, getdate()), 0);
--本月最后一天
select dateadd(month, datediff(month, -1, getdate()), -1);
--上月第一天
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)
--上月最后一天
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)
--本季第一天
select dateadd(QUARTER , datediff(QUARTER ,0, getdate()), 0);
--本季最后一天
select dateadd(QUARTER , datediff(QUARTER , -1, getdate()), -1);
--上季第一天
select dateadd(QUARTER , datediff(QUARTER ,0, getdate())-1, 0);
--上季最后一天
select dateadd(QUARTER , datediff(QUARTER , -1, getdate())-1, -1);
--本年第一天
select dateadd(year, datediff(year, 0, getdate()), 0);
--本年最后一天
select dateadd(year, datediff(year, -1, getdate()), -1);
--上年第一天
select dateadd(year, datediff(year, 0, getdate()), 0);
--上年最后一天
select dateadd(year, datediff(year, 0, getdate()), -1);
--根据当前时间获取第几季度 202302表示2023年第2季度
select concat( year(getdate()), '0', (month(getdate())+2)/3 )