TO_DATE в YYYYMMDD с DD-MON-YY

У меня есть некоторые данные в следующем формате даты. '27-SEP-97', т.е. DD-MON-YY

Теперь я хочу преобразовать это в ГГГГММДД. Я использую следующий скрипт для преобразования этого.

TO_CHAR(TO_DATE(CHD_DATE_FIRST_ACT,'DD-MON-YY'),'YYYYMMDD') 

но это дает мне следующий вывод.

20970927

Я хочу, чтобы эти данные были в формате ГГГГММДД, чтобы вывод выглядел так: 19970927


person Shubham Sharan    schedule 20.03.2018    source источник
comment
Оракл или MySQL? Пожалуйста, отмечайте только те СУБД, которые вам нужны.   -  person Wernfried Domscheit    schedule 20.03.2018
comment
Как база данных может знать, означает ли 97 1997 или 2097 год? - проблема 2000 года, невероятно, что эта проблема все еще существует. Я думаю, главная причина в том, что большинство нынешних разработчиков программного обеспечения были еще младенцами, когда проблема Y2K была самой обсуждаемой темой во всем ИТ-мире.   -  person Wernfried Domscheit    schedule 20.03.2018
comment
@WernfriedDomscheit: невероятно, что эта проблема все еще существует, ну, до следующего столетия осталось более 80 лет :-) На самом деле двузначные годы снова становятся все более распространенными.   -  person dnoeth    schedule 20.03.2018
comment
Лучше всего перед свиданиями. Можно ли пить это молоко? Не знаю, 2018 года или 1918 года?   -  person jarlh    schedule 20.03.2018
comment
@dnoeth, я предполагаю, что следующая волна проблем наступит уже примерно в 2050 году, потому что люди используют формат RR в качестве решения. К счастью, в это время я буду на пенсии.   -  person Wernfried Domscheit    schedule 20.03.2018


Ответы (3)


Если '27-SEP-97' является строкой (на что намекают ваши слова), то такая комбинация TO_this и TO_that может подойти:

SQL> with test as (select '27-SEP-97' datum from dual)
  2  select to_char(to_date(datum, 'dd-mon-rr', 'nls_date_language = english'), 'yyyymmdd') result
  3  from test;

RESULT
--------------------------------------------------------------------------------
19970927

SQL>
person Littlefoot    schedule 20.03.2018
comment
Это было полезно. Благодарю вас! - person Shubham Sharan; 20.03.2018

--USE RR вместо YY в вашем запросе.

выберите TO_CHAR(TO_DATE('27-SEP-97','DD-MON-RR'),'YYYYMMDD') из двойного;

person Ganesh    schedule 20.03.2018
comment
Это было полезно. Благодарю вас! - person Shubham Sharan; 20.03.2018

Вы можете использовать функции mysql replace и str_to_date
replace принимает 3 аргумента, как показано ниже
replace(string,find_string,replace_with)
вам следует просто заменить - пустой строкой
если ваша строка '27-SEP-97' чтобы получить вывод как 19970927, выполните следующее в mysql

select replace(str_to_date('27-SEP-97','%d-%b-%Y'),'-','') as date;
вывод

+----------+
| date     |
+----------+
| 19970927 |
+----------+

%b используется для обозначения сокращенного названия месяца

щелкните приведенные ниже ссылки, чтобы узнать больше о функциях даты и времени mysql
Функции данных и времени Mysql

person HubballiHuli    schedule 20.03.2018
comment
Это было полезно. Благодарю вас! - person Shubham Sharan; 20.03.2018
comment
@ShubhamSharan, рад, что смог помочь - person HubballiHuli; 20.03.2018