gpt4 book ai didi

sql - 如何获取今年的第一个日期和最后一个日期?

转载 作者:行者123 更新时间:2023-12-01 16:55:01 26 4
gpt4 key购买 nike

使用SQL Server 2000,如何获取当年的第一个和最后一个日期?

预期输出:

2012年1月1日2012年12月31日

最佳答案

SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

上面的查询给出了 12 月 31 日午夜的日期时间值。这距离一年中的最后时刻大约还差 24 小时。如果您想包括 12 月 31 日可能发生的时间,那么您应该与下一年的第一天进行比较,其中 <比较。或者您可以与当年的最后几毫秒进行比较,但如果您使用 DATETIME 以外的其他内容(例如 DATETIME2),这仍然会留下差距:

SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

其他时期

这种方法有两个好的方面:良好的性能,并且可以通过替换 yy 的两次出现来轻松更改为其他时期。 (=年份) 使用不同的字符串:

yy, yyyy    year
qq, q quarter
mm, m month
wk, ww week

(注意周数:开始日期取决于服务器设置。)

技术详情

这是通过使用 DATEDIFF(yy, 0, GETDATE()) 计算出自 1900 年以来的年数来实现的。然后将其添加到日期零 = 1900 年 1 月 1 日。可以通过替换 GETDATE() 将其更改为适用于任意日期。部分或任意年份,替换 DATEDIFF(...)函数“年份 - 1900”。

 SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015

关于sql - 如何获取今年的第一个日期和最后一个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13437362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com