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 )

posted @ 2022-06-06 10:20  最萌小胡胡  阅读(14025)  评论(0编辑  收藏  举报