运行PostgreSQL 7.4(是的,我们正在升级)
字段是数据类型:timestamp with time zone
格式如下:2011-06-30 19:18:07-04
转换为此格式:
to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS') AS "New Date"
输出是这样的:
06-30-2011 07:18:07
但我还需要添加经络指示器。
期望的结果:
// if AM
06-30-2011 07:18:07 AM
// if PM
06-30-2011 07:18:07 PM
我可以通过一个选项来获得这个吗?
所以我给出的示例日期时间
2011-06-30 19:18:07-04
应该是这样的:
06-30-2011 07:18:07 PM
更新:
好吧我还在寻找通过的选项,但这是我做的一个解决方法:
CASE WHEN date_part('HOUR', datetime_field) > 12
THEN to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS PM')
ELSE to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS AM')
END AS "New Date"
答案 0 :(得分:7)
根据documentation page (for v8.2),您可以使用此列表中的任何模式:AM
,am
,PM
,{{1} },pm
,A.M.
,a.m.
,P.M.
。选择的模式将定义输出中指示符的样式,但是它是 ante meridiem 还是 post meridiem ,将完全取决于时间戳值。
所以你根本不需要使用CASE。使用两者中的任何一个:
p.m.
to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS AM') AS "New Date"
那是你问的问题吗?
答案 1 :(得分:1)
to_char(datetime_field,'DD-MM-YYYY HH12:MI:SS PM')
正在使用上一版本,我不确定7.4
http://www.postgresql.org/docs/9.0/interactive/functions-formatting.html
'DD-MM-YYYY HH12:MI:SS' - 06-30-2011 07:18:07
DD-MM或MM-DD?