回答
嘗試這一個 -
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 Server查詢來查找組
- 8. SQL查詢來查找產品協會
- 9. SQL查詢來查找金融交易
- 10. SQL查詢來查找日期
- 11. 我的SQL查詢來查找#狀態
- 12. SQL查詢來查找電臺
- 13. SQL查詢按月/年
- 14. SQL查詢減1個月
- 15. 每月生日SQL查詢
- 16. SQL查詢查找最近3個月的記錄
- 17. SQL查詢:爲客戶查找最高收入月/年
- 18. 查找SQL查詢瓶頸
- 19. SQL查詢來尋找的2
- 20. SQL查詢來找到該值在源
- 21. SQL查詢來尋找替代項目
- 22. SQL查詢來尋找匹配
- 23. SQL查詢來尋找相關匹配
- 24. SQL查詢來找到在同一查詢
- 25. SQL查詢來算
- 26. SQL查詢來訪問查詢
- 27. SQL查詢來比較以下查詢
- 28. 查找年月
- 29. 查詢每月
- 30. 查詢月度週年用戶的SQL查詢
可能重複的[在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/ –