2010-03-22 145 views
3

我必须得到当月的最后一天。我怎样才能得到本月的最后一天?

+1

完全重复:http://stackoverflow.com/questions/182742/how-do-i-calculate-the-last-day-of-the-month-in-sql – Gabe 2010-03-22 04:19:36

+1

哪个数据库服务器? – beach 2010-03-22 04:20:27

+0

需要了解SQL的实现。 – galford13x 2010-03-22 04:31:11

回答

4
set dateformat dmy 

select dateadd(d, -1, dateadd(m, 1, '01-' + convert(varchar, month(getdate())) + '-' + convert(varchar, year(getdate())))) 

添加一个月到本月的第一天,减去一天。

+0

谢谢你正在工作正常 – 2010-03-22 04:56:10

0

甲骨文

SELECT LAST_DAY(SYSDATE) AS Last_day_of_month FROM DUAL; 

SQL服务器

SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)) AS Last_day_of_month 
+0

这不适用于所有情况下,如1月31日。你添加一个月,并得到2月28日/ 29日;然后减去31.失败。 – Gullbyrd 2012-07-03 14:58:22

+0

好电话Gullbyrd。我已经更新了SQL Server示例。 – beach 2012-07-06 04:38:23

5

SQLite的(sqlite3的)当月的最后一天

计算。

SELECT date('now','start of month','+1 month','-1 day'); 

结账此链接,以及如果您使用的sqlite3 sqlite datetime functions

+0

雅它正在工作 – 2010-03-22 04:56:37

0

一种替代方案:每月添加到日期,然后减去新月份的产生日值:

select day(dateAdd(d, -day(dateAdd(m,1,'2012-01-31')), dateAdd(m, 1, '2012-01-31')))

1

用于计算的SQLITE查询 当前月份的天数

select strftime('%d',datetime('now','start of month','+1 month','-1 second'));