SQLserver日期相关获取及解析

1、sqlserver获取当前月份

select datepart(mm,getdate())

   DATEPART()函数返回日期的指定部分。

   此函数以整数值返回结果。

   DATEPART(intervaldate)

ParameterDescription
intervalRequired. The part to return. Can be one of the following values:
  • year, yyyy, yy = Year

  • quarter, qq, q = Quarter

  • month, mm, m = month

  • dayofyear, dy, y = Day of the year

  • day, dd, d = Day of the month

  • week, ww, wk = Week

  • weekday, dw, w = Weekday

  • hour, hh = hour

  • minute, mi, n = Minute

  • second, ss, s = Second

  • millisecond, ms = Millisecond

dateRequired. The date to use

注:https://www.w3schools.com/sql/func_sqlserver_datepart.asp

2、sqlserver获取当前月份的名字

select datename(mm,getdate())               --以字符串而不是数字的形式得到今天的月份(07)

注:https://www.cnblogs.com/qiangshu/p/4873392.html

3、获取当前年月日

select CONVERT(varchar(10),GETDATE(),120) --2018-04-23select CONVERT(varchar(10), dateadd(dd,-1,getdate()),120) --前一天

注:https://www.cnblogs.com/Scholars/p/8919094.html

4、在当前日期上加两个月

select DATEADD(mm,2,'2014-12-30')    结果:2015-02-28 
select DATEADD(MONTH,2,'2014-12-30')  结果:2015-02-28 
select dateadd(mm,-1,getdate())

注:https://www.cnblogs.com/xyao1/p/9322168.html

5、获取当月的第一天

SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)

注:https://www.cnblogs.com/lcyuhe/p/5613632.html

6、获取上月第几天

eg

select CONVERT(varchar(10),DATEADD(day,20,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-2,0)),120); -- 2020-02-21
select CONVERT(varchar(10),DATEADD(ms,-3,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-1,0)),120);  -- 2020-02-29
select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-1,0),120); -- 2020-03-01
select CONVERT(varchar(10),dateadd(mm,-1,DATEADD(day,19,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0))),120); -- 2020-03-20
select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-1,0),120); -- 2020-03-01
select CONVERT(varchar(10),dateadd(mm,-1,DATEADD(day,19,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0))),120); -- 2020-03-20
select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())-1,0),120); -- 2020-03-01
select CONVERT(varchar(10),DATEADD(ms,-3,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)),120); -- 2020-03-31-- 当前4月1日

7、查询当月的数据

where DATEDIFF(mm,bbb.createdate+' '+bbb.createtime,getDate())=0

注:https://www.w3school.com.cn/sql/func_datediff.asp

8、取当前年 (年初 1月1号) 当前月 (月初 1号) 当前日 (零点)

SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) -- 当前年 1月1号
SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) -- 当前月 1号
SELECT DATEADD(dd,DATEDIFF(dd,0,getdate()),0) -- 当前日 零点

注:https://www.cnblogs.com/shamo89/p/9489603.html

9、去年第一天

select CONVERT(varchar(10),DATEADD(yy,DATEDIFF(yy,0,DATEADD(yy,-1,'2021-01-02')),0),120)

10、获取当前日期时间

select CONVERT(varchar,GETDATE(),120)

https://www.cnblogs.com/Scholars/p/8919094.html


11、CONVERT() 函数


CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style IDStyle 格式
100 或者 0mon dd yyyy hh:miAM (或者 PM)
101mm/dd/yy
102yy.mm.dd
103dd/mm/yy
104dd.mm.yy
105dd-mm-yy
106dd mon yy
107Mon dd, yy
108hh:mm:ss
109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110mm-dd-yy
111yy/mm/dd
112yymmdd
113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)
114hh:mi:ss:mmm(24h)
120 或者 20yyyy-mm-dd hh:mi:ss(24h)
121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)
126yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130dd mon yyyy hh:mi:ss:mmmAM
131dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110) 
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

转自:https://blog.csdn.net/l_degege/article/details/104926441,https://www.w3school.com.cn/sql/func_convert.asp


    Danzel
    Danzel管理员

    • 声明:本文由Danzel于2022-01-12转载(优化),转载须经原站同意并注明出处。
    • 本文地址:http://maryd.cn/?id=214
    上一篇:SSRS、SQLserver日期参数初始化
    下一篇:Linux设置默认IP(DNFService)

    留言评论

    暂无留言
    取消
    扫码支持