19

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

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

invoice_date 列

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

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

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

我能得到的只有:

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

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

4

2 回答 2

44

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

于 2013-02-20T18:43:08.847 回答
1

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

SELECT FORMAT(invoice_date, N'dd-MMM-yyyy hh:mm:ss tt')
于 2021-05-14T13:36:26.447 回答