27  
查询码: 00000105
sqlserver获取当月、年的第一天和最后一天 - 那啥快看 - 博客园
来源:https://www.cnblogs.com/shamo89/p/9489603.html
作者: 周杨 于 2020年03月17日 发布在分类 / 计算机应用 / 数据库 / SQLSERVER ,于 2021年02月22日 编辑
一天 日期 第一 dateadd 第一天 datediff 1900-01-01 计算 getdate

 当月第一天

select dateadd(month, datediff(month, 0, getdate()), 0)

当月最后一天

(思路:下月的第一天减去一天)
select dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1)

当年第一天

select dateadd(year, datediff(year, 0, getdate()), 0)

当年最后一天

(思路:下年的第一天减去一天)
select dateadd(year, datediff(year, 0, dateadd(year, 1, getdate())), -1)

--------------------------------------------------------------------------------------------------

函数datediff(month, 0, getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。

记住:日期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。这就是为什么你可以在DATEDIFF函数中指定第一个时间表达式为“0”。

下一个函数是DATEADD,增加当前日期到“1900-01-01”的月数。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以获得这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”。

这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,然后把它加到“1900-01-01”上来获得特殊的日期,这个技巧可以用来计算很多不同的日期。



定义和用法

DATEDIFF() 函数返回两个日期之间的时间。

语法

DATEDIFF(datepart,startdate,enddate)

startdate    enddate  参数是合法的日期表达式。

datepart  参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns




 历史版本

备注 修改日期 修改人
其他原因...增加参数说明 2021-02-22 10:04:56[当前版本] 系统管理员
CREAT 2020-03-17 09:21:15 系统管理员

  目录
    知识分享平台 -V 5.1.4 -大信谛威