2015-07-15 8 views
0

Как рассчитать конец месяца в Postgres? У меня есть таблица с типом даты столбца. Я хочу рассчитать конец месяца каждой даты. Напр. В таблице есть такие значения, как «2015-07-10 17:52:51», «2015-05-30 11:30:19», тогда конец месяца должен быть как 31 июля 2015 года 31 мая 2015 года. меня в этом.Как рассчитать конец месяца в Postgres?

ответ

4

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

myapp_co_development=# SELECT (date_trunc('MONTH', now()) + INTERVAL '1 MONTH - 1 day')::DATE; 
date 
------------ 
2015-07-31 
(1 row) 

Изменить now() на вашу переменную даты. Затем вы можете управлять этим выходом (с strftime и т. Д.) В любом формате, который вам нужен.

Source

+1

Хм, это неправильно ... Это первый из следующего месяца. Попробуйте выбрать (date_trunc ('month', '2015-06-01' :: date) :: date + interval '1 month - 1 day') :: date; – user464502

+0

Спасибо, я отправил обновленный ответ. –

3
SELECT TO_CHAR(
    DATE_TRUNC('month', CURRENT_DATE) 
     + INTERVAL '1 month'    
     - INTERVAL '1 day',    
    'YYYY-MM-DD HH-MM-SS'    
) endOfTheMonth 
0

Привет Я попытался, как это, и она работала

Date(to_char(date_trunc('month'::text, msm013.msa011) + '1 mon - 1 day '::interval , 'DD-MON-YYYY')) 

большое спасибо !!