Phi*_*ord 5 sql postgresql time datetime-format
运行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"
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
06-30-2011 07:18:07
Run Code Online (Sandbox Code Playgroud)
但我还需要添加经络指标.
期望的结果:
// if AM
06-30-2011 07:18:07 AM
// if PM
06-30-2011 07:18:07 PM
Run Code Online (Sandbox Code Playgroud)
有没有我可以通过的选项来获得这个?
所以我给出的示例日期时间
2011-06-30 19:18:07-04
Run Code Online (Sandbox Code Playgroud)
应该这样:
06-30-2011 07:18:07 PM
Run Code Online (Sandbox Code Playgroud)
更新:
好吧,我仍在寻找通过的选项,但这是我做的一个解决方法:
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"
Run Code Online (Sandbox Code Playgroud)
按照文档页面(V8.2) ,你可以使用任何方式从这个名单:AM,am,PM,pm,A.M.,a.m.,P.M.,p.m..选择的模式将定义输出中指示符的样式,但无论是metriciem还是post meridiem,都将完全取决于时间戳值.
所以你根本不需要使用CASE.使用两者中的任何一个:
to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS AM') AS "New Date"
to_char(datetime_field, 'MM-DD-YYYY HH12:MI:SS PM') AS "New Date"
那是你问的问题吗?