Как я могу преобразовать это в DATETIME SQL? - PullRequest
0 голосов
/ 01 августа 2020

Попытка преобразовать это значение в DATETIME пока безуспешна. Мысли и идеи приветствуются.

03MAR2020:02:45:58.977000

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Вы можете использовать функцию STR_TO_DATE() в правильном формате:

select str_to_date('03MAR2020:02:45:58.977000', '%d%b%Y:%k:%i:%s.%f')

См. демонстрацию . Результат:

2020-03-03 02:45:58.977000 
0 голосов
/ 01 августа 2020

in SQL Сервер

03MAR2020: 02: 45: 58.977000 не может преобразовать tot datetime, потому что сначала есть дополнительный знак : после года, а дробные секунды - 6 цифр вместо макс. 3.

Если строка всегда имеет одинаковую длину и один и тот же формат, то для решения этой проблемы вы можете использовать следующее:

DECLARE @example varchar(25) = '03MAR2020:02:45:58.977000'
SET @example = LEFT(@example, 22)   --- remove last 3 zeros
SET @example = STUFF(@example, CHARINDEX(':', @example), LEN(':'), ' ')  ---repalce the first ':'
SELECT convert(datetime, @example) --- convert to datetime

Подробнее: Вот части типа данных datetime на сервере SQL.

YYYY is four digits from 1753 through 9999 that represent a year.

MM is two digits, ranging from 01 to 12, that represent a month in the specified year.

DD is two digits, ranging from 01 to 31 depending on the month, that represent a day of the specified month.

hh is two digits, ranging from 00 to 23, that represent the hour.

mm is two digits, ranging from 00 to 59, that represent the minute.

ss is two digits, ranging from 00 to 59, that represent the second.

n* is zero to three digits, ranging from 0 to 999, that represent the fractional seconds.

Взято из документации SQL сервера

https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15

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