我正在尝试编写一个查询,该查询显示日期为"January 3, 2011"
的最新书籍,但是在尝试格式化日期时却不断出错。
以下是未格式化日期的工作查询:
SELECT title, pubdate
FROM books
WHERE pubdate =
( SELECT MAX(pubdate)
FROM books );
答案 0 :(得分:2)
如果将pubdate
定义为DATE
列,则可以使用to_char
对其进行格式化:
to_char(pubdate, 'fmMonth dd, YYYY') as pubdate
这会将其转换为指定格式的字符串(但让语言默认为用户的nls_date_language
设置)。
Oracle中的日期不是您以某种格式存储的字符串。它们包含二进制数据,并且在显示它们时必须按照所需的格式对其进行格式化。 (有时人们将日期存储为字符串,这除了是一个坏主意之外,当他们要求以不同的格式设置日期时,还会引起混乱。)
答案 1 :(得分:1)
使用To_char
将Datetime
转换为您期望的格式字符串。
这是一个样本。
CREATE TABLE books(pubdate Date, title varchar(50));
insert into books values ('18-Mar-06','A');
insert into books values ('11-Nov-06','B');
查询1 :
SELECT title,To_char(pubdate,'MON DD, YYYY') pubdate
FROM books
WHERE pubdate =
(SELECT MAX(pubdate)
FROM books)
Results :
| TITLE | PUBDATE |
|-------|--------------|
| B | NOV 11, 2006 |