转换日期PostgreSQL
全部, 我正在将一些进程从SQLServer(SQL)迁移到ParAccel(PostgreSQL)。 我的一个进程目前正在使用以下转换转换日期PostgreSQL,sql,postgresql,Sql,Postgresql,全部, 我正在将一些进程从SQLServer(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()); 当您执
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
另外,我如何才能直接获取日期,而不是整个
时间戳
如果您想从时间戳获取日期,只需执行以下操作即可
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
使用
to_char
功能将日期/时间值格式化为文本()
如果您只对日期部分感兴趣,请将时间戳转换为date
type
要更改默认日期外观,可以设置:
datestyle = 'iso, mdy'
无论是在会话中还是通过postgresql全局执行。confgetdate()不是postgresql中的(标准)函数,您确定您的示例吗?我也没有看到date_trunc()使用这种格式,它只是截断数据而不是格式化数据。