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

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)

And*_*y M 7

按照文档页面(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"

那是你问的问题吗?