SQL详细的日期时间

一、字符串转换和日期常用的函数
1.getdate函数:获取系统当前日期时间
2.cast函数:cast('20023-12-06' as datetime) 
3.convert函数:convert(varchar(100),getdate(),120)
4.dateadd函数:向指定日期加上一段时间,返回新的值,例如:dateadd(day,3,getdate()) --返回系统日期增加三天后的日期
5.datediff函数:计算开始日期和结束日期之间的差值,例如:datediff(day,'2023-12-6',getdate()) --返回2023年12月6号与系统日期相差多少天
6.datepart函数和datename函数:两者在为weekday类型参数时返回结果不同,其余返回结果相同,但返回数据类型不相同
     datepart:返回代表指定日期的指定日期部分的整数,例如:datepart(day,getdate())  --返回当前系统日期的天数(int)
     datename:返回返回代表指定日期的指定日期部分的字符串,例datename(weekday,getdate()) --返回当前系统日期是星期几(nvarchar)
7.year() ,month(),day()函数:返回指定日期的年月日的整数(int)

二.SQL日期格式转换
SELECT CONVERT(varchar(100), GETDATE(), 0)   --> 12 08 2023 16:17PM
SELECT CONVERT(varchar(100), GETDATE(), 1)   --> 12/08/23
SELECT CONVERT(varchar(100), GETDATE(), 2)   --> 23.12.08
SELECT CONVERT(varchar(100), GETDATE(), 3)   --> 08/12/23
SELECT CONVERT(varchar(100), GETDATE(), 4)   --> 08.12.23
SELECT CONVERT(varchar(100), GETDATE(), 5)   --> 08-12-23
SELECT CONVERT(varchar(100), GETDATE(), 6)   --> 08 12 23
SELECT CONVERT(varchar(100), GETDATE(), 7)   --> 12 08, 23
SELECT CONVERT(varchar(100), GETDATE(), 8)   --> 17:30:45
SELECT CONVERT(varchar(100), GETDATE(), 9)   --> 12 08 2023 17:30:45:567PM
SELECT CONVERT(varchar(100), GETDATE(), 10)  --> 12-08-23
SELECT CONVERT(varchar(100), GETDATE(), 11)  --> 23/12/08
SELECT CONVERT(varchar(100), GETDATE(), 12)  --> 231208
SELECT CONVERT(varchar(100), GETDATE(), 13)  --> 08 12 2023 17:30:45:567
SELECT CONVERT(varchar(100), GETDATE(), 14)  --> 17:30:45:567
SELECT CONVERT(varchar(100), GETDATE(), 20)  --> 2023-12-08 17:30:45
SELECT CONVERT(varchar(100), GETDATE(), 21)  --> 2023-12-08 17:30:45:567
SELECT CONVERT(varchar(100), GETDATE(), 22)  --> 12/08/23 17:30:45:567PM
SELECT CONVERT(varchar(100), GETDATE(), 23)  --> 2023-12-08
SELECT CONVERT(varchar(100), GETDATE(), 24)  --> 17:30:45
SELECT CONVERT(varchar(100), GETDATE(), 25)  --> 2023-12-08 17:30:45.567
SELECT CONVERT(varchar(100), GETDATE(), 100) --> 12 08 2023 17:30PM
SELECT CONVERT(varchar(100), GETDATE(), 101) --> 12/08/2023
SELECT CONVERT(varchar(100), GETDATE(), 102) --> 2023.12.08
SELECT CONVERT(varchar(100), GETDATE(), 103) --> 08/12/2023
SELECT CONVERT(varchar(100), GETDATE(), 104) --> 08.12.2023
SELECT CONVERT(varchar(100), GETDATE(), 105) --> 08-12-2023
SELECT CONVERT(varchar(100), GETDATE(), 106) --> 08 12 2023
SELECT CONVERT(varchar(100), GETDATE(), 107) --> 12 08, 2023
SELECT CONVERT(varchar(100), GETDATE(), 108) --> 17:30:45
SELECT CONVERT(varchar(100), GETDATE(), 109) --> 12 08 2023 17:30:45:567PM
SELECT CONVERT(varchar(100), GETDATE(), 110) --> 12-08-2023
SELECT CONVERT(varchar(100), GETDATE(), 111) --> 2023/12/08
SELECT CONVERT(varchar(100), GETDATE(), 112) --> 20231208
SELECT CONVERT(varchar(100), GETDATE(), 113) --> 08 12 2023 17:30:45:567
SELECT CONVERT(varchar(100), GETDATE(), 114) --> 17:30:45:567
SELECT CONVERT(varchar(100), GETDATE(), 120) --> 2023-12-08 17:30:45
SELECT CONVERT(varchar(100), GETDATE(), 121) --> 2023-12-08 17:30:45.567
SELECT CONVERT(varchar(100), GETDATE(), 126) --> 2023-12-08T17:30:45.567
SELECT CONVERT(varchar(100), GETDATE(), 130) --> 26 ????? ?????? 1445 5:30:45:567PM
SELECT CONVERT(varchar(100), GETDATE(), 131) --> 26/05/1445 5:30:45:567PM

三、日期函数中常用的参数值

YearYy
QuarterQq
MonthMm
年中的日Day of yearDy
DayDd
周数WeekdayDw
第几周WeekWk
小时HourHh
分钟MinuteMi
秒钟SecondSs
毫秒MillisecondMs
微秒MicrosecondMcs
纳秒NanosecondNs


四.动态获取想要的某一天

select datediff(month,0,getdate())   
--表示SQLServer中日期1900-01-01 与当前日期的月数
select dateadd(week,datediff(week,0,dateadd(week,0,getdate())),0)
--获取当前周的第一天(可通过最里层的dateadd中的0增加或者减少获取前一周与后一周的第一天)
select dateadd(Second,-1,dateadd(week, datediff(week,0,dateadd(week,0,getdate()))+1,0))
--获取当前周的最后一天,添加一周以获取下一周的第一天,当前周的最后一天为下一个周的第一天减去一秒
--(可通过最里层的dateadd中的0增加或者减少获取前一周与后一周的最后一天)
select dateadd(month,datediff(month,0,dateadd(month,0,getdate())),0) 
--获取当前月份的第一天(可通过最里层的dateadd中的0增加或者减少获取前一个月与后一个月的第一天)
select dateadd(Second,-1,dateadd(month, datediff(month,0,dateadd(month,0,getdate()))+1,0))
--获取当前月的最后一天,添加一月以获取下一个月的第一天,当前月份的最后一天为下一个月的第一天减去一秒
--(可通过最里层的dateadd中的0增加或者减少获取前一个月与后一个月的最后一天)
select dateadd(quarter,datediff(quarter,0,dateadd(quarter,-0,getdate())),0) 
--获取当前季度的第一天(可通过最里层的dateadd中的0增加或者减少获取前一个季度与后一个季度的第一天)
select dateadd(Second,-1,dateadd(quarter,datediff(quarter,0,dateadd(quarter,0,getdate()))+1,0)) 
--获取当前季度的最后一天,添加一个季度以获取下一个季度的第一天,最后一天为下一个季度的第一天减去一秒
--(可通过最里层的dateadd中的0增加或者减少获取前一个季度与后一个季度的最后一天)
select dateadd(year,datediff(year,0,dateadd(year,0,getdate())),0) 
--获取当前年度的第一天(可通过最里层的dateadd中的0增加或者减少获取前一个年度与后一个年度的第一天)
select dateadd(Second,-1,dateadd(year, datediff(year,0,dateadd(year,0,getdate()))+1,0)) 
--获取当前年度的最后一天,添加一个年度以获取下一个年度的第一天,最后一天为下一个年度的第一天减去秒
--(可通过最里层的dateadd中的0增加或者减少获取前一个年度与后一个年度的最后一天)


 

  • 25
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值