Конвертировать из текста (символ (50)) в дату и время - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь преобразовать свой текстовый столбец в дату и время.Я пробовал несколько вещей, но я продолжаю получать ошибки.Шаги, которые я до сих пор пробовал:

Convert(datetime, mydate, 103)

Ошибка, которая выдается после выполнения этого запроса в моей системе: «Ошибка арифметического переполнения при преобразовании выражения в тип данных datetime». Поэтому я искал в Интернете и нашел несколько решений, которыеЯ пытался.

Convert(datetime, convert(char(8), mydate)

и

Cast(cast(mydate as char(8)) as datetime)

Ошибка, которую он дает мне после выполнения этих запросов: «преобразование не удалось при преобразовании даты и / или времени из символьной строки», поэтому я искалбольше возможных решений и попробовал это:

Convert(datetime, convert(char(8), mydate),103)

Но это все равно дает мне ту же ошибку.У меня действительно заканчиваются решения прямо сейчас.Кто-нибудь из вас, ребята, знает, как решить эту проблему?

С уважением и заранее спасибо

Вот некоторые примеры данных:

+----+------------+
| ID |   MyDate   |
+----+------------+
| 1  |  20170120  |
+----+------------+
| 2  |  19940101  |
+----+------------+
| 3  |  20001220  |
+----+------------+
| 4  |  20171101  |
+----+------------+

Ответы [ 4 ]

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

у вас неправильный формат

select convert(datetime, '20000113', 112)
0 голосов
/ 01 октября 2018

@ miltenburger, я думаю, что @mydate был сохранен как целое число.Вот почему он выдает ошибку: Msg 8115, Уровень 16, Состояние 2, Строка 4 Ошибка арифметического переполнения при преобразовании выражения в тип данных datetime

Что нужно сделать, это сначала преобразовать его в varchar перед преобразованием в datetime.

См. Макет ниже:

DECLARE @mydate INT =20181001


SELECT CONVERT(DATETIME, CAST(@mydate as VARCHAR(20)), 103)
0 голосов
/ 01 октября 2018

Вам необходимо проверить базу данных подразумеваемых DATEFORMAT, установленных по языку

SET LANGUAGE us_english

SELECT CAST('2018-02-25' AS datetime)

SET LANGUAGE british

SELECT CAST('2018-02-25' AS datetime)
0 голосов
/ 01 октября 2018

Проблема, скорее всего, связана с форматированием.У вас есть пример строки, которую вы пытаетесь преобразовать в datetime?

Я бы посоветовал обратиться к параметру "style" в документации, чтобы убедиться, что он соответствует строковому формату, который вы передаете в функцию CONVERT.Если вы можете предоставить пример строки, будет проще предложить рабочий пример.

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

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