gpt4 book ai didi

sql - 如何在 SQL 中计算该月的最后一天?

转载 作者:行者123 更新时间:2023-12-02 17:00:57 25 4
gpt4 key购买 nike

特别是 MSSQL 2005。

最佳答案

这里有一个解决方案,可以为您提供当月的最后一秒。您可以提取日期部分或修改它以仅返回日期。我在 SQL Server 2005 上对此进行了测试。

select dateadd( s, -1, dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 ) );

要了解它是如何工作的,我们必须查看 dateadd()datediff()功能。

DATEADD(datepart, number, date)  
DATEDIFF(datepart, startdate, enddate)

如果您仅运行对 datediff() 的最内部调用,您将获得自时间戳 0 以来的当前月份数字。

select datediff(m, 0, getdate() );  
1327

下一部分将月数加 1 到 0 时间戳,为您提供下一个日历月的起点。

select dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 );
2010-09-01 00:00:00.000

最后,外部 dateadd() 只需从下个月的开始时间戳中减去一秒,即可得到当月的最后一秒。

select dateadd( s, -1, dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 ) );
2010-08-31 23:59:59.000

<小时/> 这个旧答案(如下)有一个错误,即它在天数多于下个月的月份的最后一天不起作用。我将其留在这里作为对其他人的警告。

在当前日期上加一个月,然后使用函数 DAY 和 DATEADD 减去 DAY 函数返回的值应用于当前日期。

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

关于sql - 如何在 SQL 中计算该月的最后一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/182742/

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