2010-03-22 2 views

ответ

4
set dateformat dmy 

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

добавить один месяц до первого числа этого месяца, минус один день.

+0

спасибо, что он работает нормально –

0

Oracle

SELECT LAST_DAY(SYSDATE) AS Last_day_of_month FROM DUAL; 

SQL Server

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

это не работает во всех случаях, например 31 января. Вы добавляете месяц и получаете 28/29 февраля; затем вычесть 31. Не удалось. – Gullbyrd

+0

Хороший звонок Gullbyrd. Я обновил пример SQL Server. – beach

5

SQLite (sqlite3)

Compute последний день текущего месяца.

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

контроль ссылку, а если ваш используя sqlite3 sqlite datetime functions

+0

ya работает –

0

Альтернатива: добавить в месяц на дату, а затем вычесть полученный день стоимость нового месяца:

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

1

SQLITE QUERY FOR CALCULATE КОЛИЧЕСТВО ДНЯ В ТЕЧЕНИИ МЕСЯЦА

select strftime('%d',datetime('now','start of month','+1 month','-1 second')); 
Смежные вопросы