我需要做以下练习,我很难找到解决方案:
编写一个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
哪个获得我的前两列,但是我无法想出选择第三列的方法。 任何帮助都会很棒,谢谢。 (是的,这是我学校的教科书)
答案 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')