将24小时时间转换为12小时加上AM/PM指示Oracle SQL

Gal*_*_GG 11 sql oracle datetime

我需要做以下练习,我很难找到解决方案:

编写一个SELECT语句,从发票表中返回这些列:

invoice_date列

使用TO_CHAR函数返回invoice_date列及其完整日期和时间,包括24小时制的四位数年份

使用TO_CHAR函数返回invoice_date列及其完整日期和时间,包括带有am/pm指示符的12小时时钟的四位数年份.

使用CAST函数将invoice_date列作为VARCHAR2(10)返回

我所能得到的只是:

    select invoice_date, to_char(invoice_date, 'DD-MM-YYYY HH:MM:SS') "Date 24Hr"
    from invoices
Run Code Online (Sandbox Code Playgroud)

这得到我的前两列,但我无法找出任何方式来选择第三列.任何帮助都会很棒,谢谢.(是的,这是我学校的教科书)

rua*_*akh 31

对于24小时的时间,您需要使用HH24而不是HH.

对于12小时的时间,AM/PM指示符被写为A.M.(如果您想要结果中的句点)或AM(如果您不想).例如:

SELECT invoice_date,
       TO_CHAR(invoice_date, 'DD-MM-YYYY HH24:MI:SS') "Date 24Hr",
       TO_CHAR(invoice_date, 'DD-MM-YYYY HH:MI:SS AM') "Date 12Hr"
  FROM invoices
;
Run Code Online (Sandbox Code Playgroud)

有关可TO_CHAR在日期使用的格式模型的详细信息,请参阅http://docs.oracle.com/cd/E16655_01/server.121/e17750/ch4datetime.htm#NLSPG004.

  • @Galen_GG 实际上,对于 12 小时时间格式,通常最好*不要* 在输出小时格式中包含前导零(`03:50 PM` 看起来是错误的,因为前导零在大多数情况下意味着 24 小时时钟!!)。因此最好使用:`TO_CHAR(invoice_date, 'DD-MM-YYYY FMHH:MI:SS AM') "Date 12Hr"` (2认同)