sql server 获取今天的数据_sqlserver获取当前日期时间

数据库 (1) 2024-10-04 16:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
sql server 获取今天的数据_sqlserver获取当前日期时间,希望能够帮助你!!!。

写SQL脚本时间长了,大家就会有一种感觉,那就是日期的运用非常广泛。各种数据和报表统计,往往都少不了对某段日期的数据进行查询和处理。

sql server 获取今天的数据_sqlserver获取当前日期时间_https://bianchenghao6.com/blog_数据库_第1张

如果是具体的日期,使用'2018-11-19'这种格式即可满足,但我们统计的往往不是某一个固定日期,而是基于固定日期的某个日期段,比如本月第一天到本月最后一天、上月第一天到上月最后一天等等,那如何才能获取这些特殊的日期点呢?

SQL Server中使用getdate()获取当前时间,dateadd()对日期时间进增加或减少,datediff()计算日期时间之间的差值,datepart()获取日期时间的单项值。

DATEADD增加或减少指定时间

dateadd函数的格式为:DATEADD(datepart,number,date)

其中datepart的含义参看下图,后面datediff和datepart中使用的datepart,也是适用的。

sql server 获取今天的数据_sqlserver获取当前日期时间_https://bianchenghao6.com/blog_数据库_第2张

如果觉得使用缩写不够直观,也可以直接使用单词表示,比如年使用year、季度使用quarter、月使用month、日使用day、周使用week、小时使用hour等也是可以的。

DATADIFF两个日期之间的时间

datediff函数的格式为:DATEDIFF(datepart,startdate,enddate)

DATAPART日期/时间的单独部分

datepart函数的格式为:DATEPART(datepart,date)

我下面对常用的特殊日期获取方法做一个整理,权当抛砖引玉,希望对您有所帮助

上个月第一天

select dateadd(dd, -day(dateadd(month, -1, getdate())) + 1, dateadd(month, -1, getdate())) 

上个月最后一天

select dateadd(day, -day(getdate()), getdate()) 

本月第一天

select dateadd(day, -day(getdate()) + 1, getdate()) 

本月最后一天

select dateadd(day, -day(dateadd(month, 1, getdate())), dateadd(month,1 , getdate())) 

下个月第一天

select dateadd(day, -day(dateadd(month, 1, getdate())) + 1,dateadd(month, 1, getdate())) 

下个月最后一天

select dateadd(day, -day(dateadd(month, 2 ,getdate())), dateadd(month, 2, getdate())) 

本周的星期一

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

本季度的第一天

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

本季度的最后一天

select dateadd(ms, -3, dateadd(quarter, datediff(quarter, 0, getdate()) + 1, 0)) 

本月的第一个星期一

select dateadd(week, datediff(week, 0, dateadd(day, 6 - datepart(day, getdate()), getdate())), 0) 

本年的第一天

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

本年的最后一天

select dateadd(ms, -3, dateadd(year, datediff(year, 0, getdate()) + 1, 0)) 

去年的最后一天

select dateadd(ms, -3, dateadd(year, datediff(year, 0, getdate()), 0)) 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复