Как я могу преобразовать эти данные в SQL Server - PullRequest
0 голосов
/ 04 сентября 2010

тип моей колонки даты NVARCHAR (50) пример даты 02 сентября 2010 пятница Я хочу конвертировать данные для можно сделать заказ по ..

Я использую ORDER BY CONVERT (DATETIME, M.DeletedDate, 102) DESC, и я попытался 103,104,105 ......

сообщение об ошибке = Ошибка преобразования при преобразовании даты и / или времени из символьной строки.

как я могу преобразовать это значение в DATETIME или SMALLDATETIME пожалуйста, помогите мне!

Ответы [ 3 ]

5 голосов
/ 04 сентября 2010

Список типов задокументирован в CAST и CONVERT (Transact-SQL) . Наиболее близким к вашему стилю является 106 (d mon yyy), но это будет понимать 2 Sep 2010, а на самом деле оно также будет понимать 2 September 2010. Но ни один стиль не поймет 2 September 2010 Friday. Этот стиль очень необычен, компьютерам не нужно напоминать, какой день недели - свидание, они знают ...

Вам нужно изменить формат данных на допустимый формат данных. Фактически, вы должны использовать хранилище DATETIME в качестве DATETIME для начала и не делать дорогостоящих конвертаций. Если данные поступают «как есть» из внешнего источника, то вы должны преобразовать их соответствующим образом перед тем, как сохранить их в таблице, в этом весь процесс ETL.

1 голос
/ 04 сентября 2010

Не нравится день недели в конце.Вот один из способов избавиться от этого:

DECLARE @Dt nvarchar(50)
SET @Dt = '02 September 2010 Friday'
SELECT Convert(datetime, Substring(@DT, 1, Len(@Dt) - CharIndex(' ', Reverse(@Dt))), 106)

Однако вы, вероятно, уже знаете, что даты, хранящиеся в виде строк, очень неэффективны.Если есть какой-либо способ, которым вы можете изменить столбец на столбец с реальной датой или добавить другой столбец с датой и временем, в котором вы можете хранить реальную дату и время, вы должны это сделать.Вы получите плохую производительность, если в столбце возникнут какие-либо условия, потому что он будет вынужден выполнять преобразование строк для каждой строки в таблице.Ой!

0 голосов
/ 04 сентября 2010

спасибо за ответы.Я добавил новый столбец типа smalldatetime и триггер для установки этого столбца.Я буду использовать этот столбец для сортировки и время, чтобы показать другой столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...