--SQLserver获取当前日期
-
select GETDATE() -----GETDATE()获取当前 年-月-日:时-分-秒
--SQLserver中的datepart函数,获取日期某一个部分,如年,月,日,时,分,秒 ,例:
select datepart(YY,'2023-2-7' )
该示例就是获取日期中的“年份”部分。datepart方法中的参数分为两个部分,第一个参数"YY"是获取的部分,需要哪个部分就将相应单词的缩写填入。第二参数就是日期,是个日期就行。第一部分参考如下
年
|
yy,yyyy,year
|
月
|
mm,m,month
|
日
|
dd,d,day
|
时
|
hh,hour
|
分
|
mi,n,minute
|
秒
|
ss,s,second
|
第几周
|
ww,week
|
周几
|
dw,weekday
|
不止这些,暂时列出这些我常用的。
SQLserver中dateadd方法。对某个日期的某个部分加上或减去指定时间间隔。例:
select dateadd(YY,1,GETDATE()) --当前日期加上一年
select dateadd(mm,1,GETDATE()) --当前日期加上一个月
dateadd的参数分为三个,第一个是操作日期的某个部分,YY为年,MM为月,以此类推,参数可参考上面的列表。第二个参数是时间间隔,与第一个参数相关联,比如,该SQL的第一个参数改为mm,则该SQL的作用就是在当前日期上加上一个月,随第一个参数的改变而改变。第三个参数是指定日期,将自己需要操作的日期放上去就行。
额外说明:(个人的理解,如果不对也还请大佬指出,谢谢)第三个参数可以是一个日期,也可以是一个整数,也可以是日期和整数的组合,例:
select dateadd(YY,0,1) --效果为1900-01-01加上一天
select dateadd(YY,0,GETDATE() - 1) --效果为当前日期减去一天
第三个参数感觉上相当于天数,以“1900-01-01 00:00:00.000”为起点的天数。参数只为一个整数就会在此日期的天数上加上这个整数。
SQLserver中获取当月的第一天和最后一天。
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) --当月第一天
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())+1, -1); --当月最后一天(可能显得有点不规范,但也能达到效果)
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()), -1); --当月的最后一天(另一种写法)
根据3中的一些原理,解读这第一句SQL,第二个参数算出当前日期与初始日期(1900-01-01 00:00:00.000)的月份差,第三个参数是0,表示初始日期。初始日期加上月份差,就得到了当前月份,由于只加了月份差,没有涉及到“日”,“日”则会默认为最小值01。
由于月份有28天,30天等上下浮动,所以获取当月的最后一天的思路就是下个月的第一天减去一天,就得到了当月的最后一天。(datediff函数讲解在下面)
SQLserver中获取日期年份的第一天和最后一天
由上面获取当月第一天和最后一天类推可得
select DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) --获取当前日期年份的第一天
select DATEADD(YEAR, DATEDIFF(YEAR, -1, GETDATE()), -1); --获取当前日期年份的最后一天
SQLserver中的DATEDIFF函数,获取两个时间的时间差
select DATEDIFF(YEAR, 0, GETDATE()) --两个时间的年份差
select DATEDIFF(MONTH, 0, GETDATE()) --两个时间的月份差
函数datediff有三个参数,第一个参数是操作日期的某个部分,需要对比什么时间差就写什么值,可写单词完整拼写,也可简写。第二个参数的开始时间,第三个参数是结束时间。第二,三个参数可以是某个日期,也可以是整数,也可以是日期和整数的组合。如果是整数,则是以初始日期“1900-01-01 00:00:00.000”加上这个整数,单位是天数。如果是日期和整数的组合,那么就是这个日期和初始日期的天数差加上整数。
这个函数的时间差就是第三个参数日期参数减去第二个参数日期得出的时间差,所以如果第二个参数日期比第三个参数日期大结果会是负数。
SQLserver中的convert函数,将日期转换指定的输出格式
select CONVERT(VARCHAR(2),GETDATE(),101) --将当前日期按101格式输出并转成varcahr类型,且长度为2(最后输出值为月份部分)
select CONVERT(VARCHAR(20),GETDATE(),120) --将当前日期按120格式输出并转成varcahr类型,且长度为20(最后输出值为yyyy-mm-dd hh:mi:ss)格式
该函数包含三个参数,
第一个参数为转换指定的输出格式后需要转换成的数据类型,比如第一个SQL,转成varchar类型,长度为2,相当于获取了日期的月份部分,也算是另类的日期获取方式。
第二个参数为需要操作的日期,
第三个参数为指定的日期格式。参数如下图