Форматирование даты в SQL - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь написать запрос, который показывает новейшую книгу с форматом даты "January 3, 2011", но я продолжаю получать ошибки при попытке форматировать дату.

Ниже приведен рабочий запрос без даты:

SELECT title, pubdate 
FROM   books
WHERE  pubdate =
       ( SELECT MAX(pubdate)
         FROM   books );

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Если pubdate определен как столбец DATE, вы можете отформатировать его как to_char:

to_char(pubdate, 'fmMonth dd, YYYY') as pubdate

Это преобразует его в строку в указанном формате (но позволяет языку по умолчаниюв настройку nls_date_language пользователя).

Даты в Oracle не являются строками, которые вы храните в каком-либо формате.Они содержат двоичные данные, и вы должны форматировать их так, как вы хотите, когда вы их отображаете.(Иногда люди хранят даты в виде строк, что, помимо того, что это плохая идея, может создать путаницу, когда они спрашивают об их различном форматировании.)

0 голосов
/ 03 октября 2018

используйте 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)

Результаты :

| TITLE |      PUBDATE |
|-------|--------------|
|     B | NOV 11, 2006 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...