Как преобразовать столбец varchar в поле datetime. Поле VARCHAR имеет дату и время в формате нижеПреобразование Varchar в Datetime - SQL Server
t_time
-------
20140314163955
ниже не работает
CAST(t_time AS datetime)
Спасибо заранее.
Как преобразовать столбец varchar в поле datetime. Поле VARCHAR имеет дату и время в формате нижеПреобразование Varchar в Datetime - SQL Server
t_time
-------
20140314163955
ниже не работает
CAST(t_time AS datetime)
Спасибо заранее.
Один из вариантов для того, чтобы держать его в чистоте будет использовать функцию, как показано ниже:
CREATE FUNCTION CONVERT_DATETIME_STRING_TO_DATE (@StringDate NVARCHAR(14))
RETURNS DATETIME
AS
BEGIN
DECLARE @RESULT DATETIME
SELECT @RESULT = CONVERT(datetime, substring(@StringDate, 0, 9))
SELECT @RESULT = DATEADD(HOUR, CAST(SUBSTRING(@StringDate, 9, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(MINUTE, CAST(SUBSTRING(@StringDate, 11, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(SECOND, CAST(SUBSTRING(@StringDate, 13, 2) AS INT), @RESULT)
RETURN (@RESULT)
END
Преобразование может быть сделано в одном SELECT
заявлении, но я думаю, что лучше для разделения каждого шага добавления часов, минут, секунд, чтобы он стал более четким кодом и стал проще поддерживать.
Затем, просто вызовите функцию из таблицы, например:
SELECT CONVERT_DATETIME_STRING_TO_DATE(t_time)
FROM myTable
Update:
Если у вас есть доступ только сделать SELECT
заявления, а затем использовать что-то вроде этого:
SELECT DATEADD(SECOND, CAST(SUBSTRING(t_time, 13, 2) AS INT), DATEADD(MINUTE, CAST(SUBSTRING(t_time, 11, 2) AS INT), DATEADD(HOUR, CAST(SUBSTRING(t_time, 9, 2) AS INT), CONVERT(DATETIME, substring(t_time, 0, 9)))))
FROM TABLE
Приложение, которое я использую, запускает выбор для извлечения строк из таблицы. Поскольку дата указана в формате, указанном выше. Приложение потребовало один лайнер для преобразования varchar в метку времени для обработки строки. –
@PottaPitot Итак? Вы все равно можете использовать эту функцию в регулярном выражении 'SELECT', как показано в моем примере о том, как вы можете вызвать функцию после ее создания. –
Проблема в том, что я не могу создать функцию. Все, что у меня есть, - это привилегия выбора доступа, которая читается только из существующей таблицы, и один из этих столбцов содержит метку времени, представленную в вышеуказанном формате. –
Попробуйте это.
DECLARE @s AS VARCHAR(14)
DECLARE @dt AS DATETIME
SET @s = '20140314163955'
SET @dt = CAST(SUBSTRING(@s, 1,8) as datetime)
SELECT DATEADD(Second,
CAST(Substring(@s, 13,2) AS INT) ,
DATEADD(minute,
CAST(Substring(@s, 11,2) AS INT) ,
DATEADD(hour,
CAST(Substring(@s, 9,2) AS INT),
@dt))) AS [DateTime]
Приложение, которое я использую, запускает выбор для извлечения строк из таблицы. Поскольку дата указана в формате, указанном выше. Приложение потребовало один лайнер для преобразования varchar в метку времени для обработки строки. –
Вам нужна также часть времени? – Raj