Как преобразовать строку в дату в T-SQL?
Мой тестовый пример - это строка: '24.04.2012'
Как преобразовать строку в дату в T-SQL?
Мой тестовый пример - это строка: '24.04.2012'
Ответы:
CONVERT(datetime, '24.04.2012', 104)
Должен сделать свое дело. См. Здесь для получения дополнительной информации: CAST и CONVERT (Transact-SQL)
CONVERT(DateTime, DateField, 104)
Предполагая, что база данных - это MS SQL Server 2012 или выше, вот решение, которое работает. Базовый оператор содержит встроенный try-parse:
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
Вот что мы реализовали в производственной версии:
UPDATE dbo.StagingInputReview
SET ReviewedOn =
ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
-- Check for empty/null/'NULL' text
WHERE not ReviewedOnText is null
AND RTrim(LTrim(ReviewedOnText))<>''
AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
Столбцы ModifiedOn и ModifiedBy предназначены только для внутреннего отслеживания базы данных.
См. Также эти ссылки Microsoft MSDN:
Хотя функция CONVERT работает, вам не следует ее использовать. Вы должны спросить себя, почему вы анализируете строковые значения в SQL-Server. Если это одноразовая работа, когда вы вручную исправляете некоторые данные, вы не получите эти данные в другой раз, это нормально, но если какое-либо приложение использует это, вам следует что-то изменить. Лучше всего использовать тип данных «дата». Если это пользовательский ввод, это еще хуже. Затем вы должны сначала проверить клиента. Если вы действительно хотите передавать строковые значения там, где SQL-сервер ожидает дату, вы всегда можете использовать формат ISO ('ГГГГММДД'), и он должен преобразоваться автоматически.
Ты можешь использовать:
SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
Ссылка: CAST и CONVERT (Transact-SQL)
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
сделаю то, что нужно, результат:
2012-04-24 00:00:00.000