Как преобразовать String в Date в T-SQL?
Мой тестовый пример - строка: '24.04.2012'
Как преобразовать String в Date в T-SQL?
Мой тестовый пример - строка: '24.04.2012'
CONVERT(datetime, '24.04.2012', 104)
Должен сделать свое дело. Смотрите здесь для получения дополнительной информации: CAST и CONVERT (Transact-SQL)
CONVERT(DateTime, DateField, 104)
Предполагая, что база данных MS SQL Server 2012 или выше, вот решение, которое работает. Базовый оператор содержит встроенный трип-анализ:
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-Server ожидает дату, вы всегда можете использовать ISO-формат ( "YYYYMMDD" ), и он должен автоматически преобразовываться.
Вы можете использовать:
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