全部,
我正在将一些进程从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
。
答案 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
答案 1 :(得分:0)
使用to_char
功能将日期/时间值格式化为文本(http://www.postgresql.org/docs/9.3/static/functions-formatting.html)。
如果您只对日期部分感兴趣,请将时间戳转换为date
类型。
要更改默认日期外观,您可以设置:
datestyle = 'iso, mdy'
在您的会话中,或通过postgresql.conf全局