PostgreSQL中的last_day

时间:2014-06-19 12:50:29

标签: postgresql

oracle last_day函数返回该月的最后一天。 例如:

nls_date_format='YYYY-MM-DD H24:MI:SS'
select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
-------------------
2014-06-30 15:45:43

oracle也返回时间值。

我在PostgreSQL中尝试过以下sql,返回月份的最后一天,但时间值是" 00:00:00"。

select (date_trunc('month', now()) + interval '1 month -1 day')::timestamp(0);
         ?column?          
---------------------------
 2014-06-30 00:00:00
(1 row)

sql正确返回日期,但我想要像oracle一样的日期和时间。

2 个答案:

答案 0 :(得分:4)

select (
    date_trunc('month', now())
    + interval '1 month -1 day'
    + now()::time
)::timestamp(0);

答案 1 :(得分:0)

函数last_day()应该可以解决问题。该函数应该在名为“orafce”的扩展包中找到。包含Oracle中使用的其他函数。

  1. 安装正确版本的orafce软件包(如果需要):

    apt-get install postgresql-9.1-orafce
    
  2. SQL:

    Create Extension orafce
    
  3. 如果错误将orafce - 3.0.sql重命名为orafce - 3.03.sql或用户更高版本的orafce。

  4. 使用功能:

    SELECT last_day('2015-01-01')
    
  5. 按预期工作,结果为'2015-01-31'