转换日期PostgreSQL

时间:2014-05-07 16:37:00

标签: sql postgresql

全部,

我正在将一些进程从SQL Server(SQL)迁移到ParAccel(PostgreSQL)。 我目前正在使用以下转换之一。

Select convert(datetime,convert(varchar,MAX(getdate()), 101),101)  

运行此查询后,您将获得:2014-05-07 00:00:00.000

我在postgresql中找到了一个可以完成这项工作的函数。功能是:

SELECT date_trunc('day', getdate());

执行该查询时,您会收到以下信息:5/7/2014 12:00:00 AM

PostgreSQL中是否有一种方法可以获得与SQL相同的结果。所以我想得到2014-05-07 00:00:00.000

另外,我怎样才能获得日期,而不是整个TIMESTAMP

2 个答案:

答案 0 :(得分:2)

如果您想从时间戳中获取日期,请执行

postgres=# select current_timestamp::date;
    now     
────────────
 2014-05-07
(1 row)

有两种方式

  • 首选 - 使用to_char函数

    postgres=# select to_char(current_timestamp, 'YYYY-MM-DD hh24:mm:ss.ms');
            to_char         
    ─────────────────────────
    2014-05-07 19:05:52.537
    (1 row)
    
  • 或使用datestyle配置变量

    postgres=# set datestyle TO ISO;
    SET
    Time: 0.353 ms
    postgres=# select current_timestamp;
                  now              
    ───────────────────────────────
     2014-05-07 19:12:44.236758+02
    (1 row)
    
    Time: 0.406 ms
    postgres=# set datestyle TO GERMAN ;
    SET
    Time: 0.565 ms
    postgres=# select current_timestamp;
                   now               
    ─────────────────────────────────
     07.05.2014 19:12:51.781772 CEST
    (1 row)
    
    Time: 0.700 ms
    

related postgresql doc

答案 1 :(得分:0)

使用to_char功能将日期/时间值格式化为文本(http://www.postgresql.org/docs/9.3/static/functions-formatting.html)。

如果您只对日期部分感兴趣,请将时间戳转换为date类型。

要更改默认日期外观,您可以设置:

datestyle = 'iso, mdy'

在您的会话中,或通过postgresql.conf全局