Как конвертировать из одного формата даты в другой, на сервере Microsoft SQL? - PullRequest
2 голосов
/ 03 ноября 2011

У меня есть дата, которая хранится в формате «ММ / ДД / ГГГГ» (101), и я хочу преобразовать ее в «ДД / ММ / ГГГГ» (103). Исходная дата (дата в формате 101) изначально сохраняется как varchar, поэтому я предполагаю, что вам сначала нужно преобразовать ее в тип даты, прежде чем изменять ее формат.

Таким образом, практически мой вопрос таков: "Как изменить формат даты, хранящейся как varchar?".

Ответы [ 4 ]

4 голосов
/ 03 ноября 2011

попробуйте это ...

select CONVERT(varchar(10), CONVERT(datetime, '12/31/2011', 101), 103)
1 голос
/ 10 ноября 2011

если вы хотите иметь значение типа DATE, вам не нужно заключать все преобразования в другой CAST. вы можете просто конвертировать / разыгрывать его прямо как

select CONVERT(date, CONVERT(datetime, '12/31/2011', 101))

или

select CONVERT(date, '12/31/2011', 101) 
1 голос
/ 03 ноября 2011

CAST и CONVERT ваши друзья здесь. В частности, обратите внимание на коды формата даты.

0 голосов
/ 24 марта 2019

Я использовал ответ Леона Тайсона, чтобы исправить поле со смешанными форматами даты, используя коды из этого местоположения: https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

/**MM-DD-YYYY to YYYY-MM-DD **/
UPDATE [DBO].[TABLE]
   SET [DATEFIELD] = CONVERT(varchar(10), CONVERT(datetime, DATEFIELD, 110), 23)
where DATEFIELD like '__-__-____'

/** excel date serial number to YYYY-MM-DD **/
UPDATE [DBO].[TABLE]
   SET [DATEFIELD] = dateadd(DAY, convert(bigint, DATEFIELD) , convert(date, '1-1-1900'))
 Where Len(UPDATED_DATE) = 5

/** YYYY to YYYY-MM-DD **/
UPDATE [DBO].[TABLE]
SET [DATEFIELD] = DATEFIELD + '-01-01'
Where Len(DATEFIELD) = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...