SQL-запрос для преобразования даты в другой формат - PullRequest
0 голосов
/ 02 июня 2011

Спасибо за вашу помощь. Я не могу разобрать тип / формат «значения» в столбце «Дата». Я предполагаю, что это в юлианском формате даты.

Столбец paid_month и значения ниже.

                  200901
                  200902

Так что, пожалуйста, помогите в написании SQL-запроса для преобразования вышеуказанных значений (в основном в юлианском формате) в столбце даты в обычную дату (ММ / ДД / ГГГГ).

Спасибо Рохит

Привет

Прошу прощения за то, что не предоставил всю информацию.

1) Это база данных Oracle. 2) Данный столбец равен Paid_Month со значениями 200901, 200902

3) Я также смущен тем, что приведенное выше значение дает месяц и год. День не дается, если мое предположение верно.

4) Если он не в юлианском формате, то, пожалуйста, также помогите мне получить SQL, по крайней мере, мм / гггг


Я использую базу данных Oracle и выполняю запрос СПАСИБО, Я ПОЛУЧИЛ ОТВЕТ.

** Теперь я должен сделать обратное значение, преобразовав дату 01.09.2010 в строку, содержащую 6 цифр. Пожалуйста, помогите с синтаксисом выберите to_char (01.01.2010, **

Ответы [ 4 ]

2 голосов
/ 02 июня 2011

Похоже, ГГГГММ - в зависимости от варианта вашей базы данных попробуйте STR_TO_DATE(paid_month, 'YYYYMM'), затем отформатируйте его.

Примечание: ММ / ДД / ГГГГ - это не «нормальный» формат - его используют только американцы.Остальной мир использует ДД / ММ / ГГГГ

0 голосов
/ 02 июня 2011
SELECT (paid_month % 100) + "/01/" + (paid_month/100) AS paid_day
FROM tbl;

Я не уверен, как оракул объединяет строки.Часто вы видите ||в SQL:

SELECT foo || bar FROM ...

или функции:

SELECT cat (foo, bar) FROM ...
0 голосов
/ 02 июня 2011

Для MySQL вы должны использовать функцию STR_TO_DATE, см. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date

SELECT STR_TO_DATE(paid_month,'%Y%m');

Похоже, что столбец содержит некоторые нормальные даты и некоторые даты ГГГГММ.Если целью является обновление всего столбца, вы можете попытаться изолировать даты ГГГГММ и обновить только эти даты.Что-то вроде:

UPDATE YourTable
SET paid_month = DATE_FORMAT(STR_TO_DATE(paid_month, '%Y%m'), '%m/%d/%Y')
WHERE LENGTH(paid_month) = 6
0 голосов
/ 02 июня 2011

Для проверки MySQL http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

Пример:

SELECT DATE_FORMAT(NOW(), '%d/%m/%Y')
...