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

时间:2013-02-20 18:38:53

标签: sql oracle datetime

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

编写一个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

哪个获得我的前两列,但是我无法想出选择第三列的方法。 任何帮助都会很棒,谢谢。 (是的,这是我学校的教科书)

2 个答案:

答案 0 :(得分: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
;

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

答案 1 :(得分:1)

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

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