【问题标题】:Convert 24 Hour time to 12 Hour plus AM/PM indication Oracle SQL将 24 小时制时间转换为 12 小时制加上 AM/PM 指示 Oracle SQL
【发布时间】:2013-02-05 21:42:00
【问题描述】:

我需要做以下练习,我正在努力寻找解决方案:

编写一个从 Invoices 表中返回这些列的 SELECT 语句:

invoice_date 列

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

使用 TO_CHAR 函数返回 invoice_date 列及其完整日期和时间,包括 具有上午/下午指示符的 12 小时制上的四位数年份。

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

我能得到的只有:

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

这得到了我的前两列,但是我想不出任何方法来选择第三列。 任何帮助都会很棒,谢谢。 (是的,这是来自我的学校教科书)

【问题讨论】:

标签: sql oracle datetime


【解决方案1】:

对于 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
;

有关可在日期上与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"
  • @cartbeforehorse 感谢您如何在小时内删除前导 0。
【解决方案2】:

'hh' 是 12 小时制,'HH' 是 24 小时制,'tt' 是 AM/PM

SELECT FORMAT(invoice_date, N'dd-MMM-yyyy hh:mm:ss tt')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    相关资源
    最近更新 更多