回答
尝试这一个 -
CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth]
(
@Date DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))
END
查询:
DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'
SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))
输出:
-----------------------
2013-05-31 00:00:00.000
只要记住,如果你在between语句中使用它来获取(例如)给定的所有记录月,这将排除最后一天的记录。您可能需要使用下个月的第一天。 – SteveCav
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
我知道这问题在于SQL Server 2005,但我想我会提到 - 从2012年起,现在有一个EOMONTH()
函数可以获得该月的最后一天。要使用原始提问者指定的格式,您必须将其转换为datetime
。
SELECT CAST(eomonth(GETDATE()) AS datetime)
http://php.net/manual/en/function.cal-days-in-month.php
在给定日历
<?php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "There was $num days in August 2003";
?>
这不是问题所在,也没有人提及使用PHP的任何内容。 – Matt
dateadd(month,1+datediff(month,0,getdate()),-1)
要检查运行于所选月份的天长度:
print dateadd(month,1+datediff(month,0,@date),-1)
计算的最后日期这个月是很简单的计算 -
- 查找总计数月,直到使用DATEDIFF(.. .. ..)函数今天的日期 - 选择DATEDIFF(MM,0,GETDATE())
输出 - 1374,如果GETDATE()的输出为 “2014年7月23日19:33:46.850”
- 递增1到总月计数 - 选择DATEDIFF(MM,0,GETDATE())+ 1
输出 - 1375,如果GETDATE()输出为 “2014年7月23日19:33:46.850”
- 获取下个月的第一天 - 选择DATEADD(MM,DATEDIFF(MM,0 ,GETDATE())+ 1,0)
输出 - '2014-08-01 00:00:00.000',如果GETDATE()的输出为 “2014年7月23日19:33:46.850”
- 将-1减去下个月的第一个日期,这将返回当前月份的最后一个日期 - 选择DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,0,GETDATE())+ 1,0))
输出 - '2014-07-31 00:00:00。000' ,如果GETDATE()的输出为‘2014年7月23日19:33:46.850’
在相同的计算方式就可以达到 - 下个月 2的最后日期的 1.最后日期上个月 等等......
我希望这篇文章能帮上忙。
SQL Server 2012中引入了the eomonth
function:
select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
选择DATEADD(DAY, - (DAY(DATEADD(月,1,GETDATE()))),DATEADD(月,1,GETDATE()))
这在T-SQL的伟大工程..
更换查询的GETDATE()与列名。
TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL
欢迎来到StackOverflow!请考虑在代码中添加一些解释。谢谢。 – Aurasphere
- 1. SQL查询来查找列
- 2. SQL查询月/
- 3. SQL:月份月查询
- 4. SQL查询每月
- 5. SQL查询来查找日期
- 6. SQL查询来查找金融交易
- 7. 我的SQL查询来查找#状态
- 8. SQL Server查询来查找组
- 9. 每月生日SQL查询
- 10. 查找SQL查询瓶颈
- 11. SQL查询来寻找相关匹配
- 12. SQL查询来寻找的2
- 13. SQL查询来寻找替代项目
- 14. SQL查询来找到该值在源
- 15. SQL查询来找到在同一查询
- 16. SQL查询来访问查询
- 17. SQL查询来比较以下查询
- 18. 查找年月
- 19. 按月查询分组状态的SQL查询。修正系统
- 20. 查询月度周年用户的SQL查询
- 21. 查询当前月份的最后一天的SQL查询?
- 22. 在sql查询中提取月份
- 23. SQL查询并增加在几个月
- 24. 拆分SQL查询的年/月
- 25. 本月的SQL查询转换
- 26. SQL查询到组日期按月
- 27. 的Oracle SQL上个月查询问题
- 28. 仅从SQL查询中提取月份
- 29. 嵌套的SQL查询的月数
- 30. 每月运行一次SQL查询 - PHP
可能重复的[在SQL中获取每月的最后一天](http://stackoverflow.com/questions/1051488/get-the-last-day-of-the-month-in-sql ) – Pondlife
参考https://codepedia.info/eomonth-last-date-month-in-sql-server/ –