Sql конвертировать текстовое поле в поле даты - PullRequest
3 голосов
/ 05 октября 2011

Я импортирую базу данных доступа в sql.

Исходная база данных доступа имеет поле даты, которое хорошо импортируется, но поле времени является текстовым (например, 10:00 утра).

У меня более 4000 записей, и я предполагаю, что есть способ преобразовать 10:00 AM в 10: 00: 00.000 (или 19:30 в 19: 30: 00.000 и т. Д.), Чтобы их можно было объединить с уже существующим полем даты (которое теперь похоже на 2011-11-11 00: 00: 00.000).

Кроме того, если преобразование и объединение легко выполнить в одном и том же процессе, обратите внимание.

Ответы [ 3 ]

1 голос
/ 05 октября 2011

посмотрите это:

declare @timeField as varchar(10)
set @timeField = '07:30 PM'

declare @dateField as varchar(10)
set @dateField = '1900-01-01'

select CONVERT(datetime,@dateField + ' ' + CAST(CONVERT(time, @timeField ,121) AS VARCHAR(11)),121)
1 голос
/ 05 октября 2011

для преобразования времени из формата am или pm 10:00 PM в формат времени 10:00:00.000:

select cast(timestring as time(7))
0 голосов
/ 05 октября 2011

В ваших скриптах импорта (я предполагаю, что вы используете какой-то SQL для ETL ваших данных с сервера Access на SQL), вы можете использовать функцию преобразования следующим образом:

declare @t as time = Convert(time, '10:00PM' )
print @t -- prints 22:00:00.0000000

ИЛИ

declare @t as time = Convert(time, '10:00AM' )
print @t -- prints 10:00:00.0000000

И, конечно, если вы хотите контролировать точность в соответствии с вашим примером:

Convert(time(3), '10:00PM' ) -- prints 22:00:00.000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...