军事日期/时间to_char子午线指示器选项

时间:2011-07-01 14:19:47

标签: 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"

输出是这样的:

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"

2 个答案:

答案 0 :(得分:7)

根据documentation page (for v8.2),您可以使用此列表中的任何模式:AMamPM,{{1} },pmA.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?