Как конвертировать datetime в int в sql server2012? - PullRequest
0 голосов
/ 06 сентября 2018

Вот мой вопрос: Это таблица с именем HB06, тип данных "WRTime" - datatime. Я хочу преобразовать все WRTime в int. Например, 2012-11-09 10:52:38.000 будет преобразовано в 20121109105238.

image

Спасибо!

Ответы [ 5 ]

0 голосов
/ 07 сентября 2018

SQL версии 2012 или выше, вы можете использовать функцию FORMAT , чтобы получить только год и месяц, а затем привести их к типу int.

В версиях до 2012 года вы можете выполнить форматирование с помощью функции convert, а затем привести к типу int.

declare @WRTime datetime
set @WRTime = '2012-11-09 10:52:38.000'

select cast(format(@WRTime,'yyyyMM') as int) --2012 or higher

ИЛИ Вы можете использовать:

SELECT YEAR(@WRTime)*100 + MONTH(@WRTime);

2012-11-09 10: 52: 38.000 будут преобразованы в 20121109105238 ??

Int не может преобразовать это, поэтому используйте "BIGINT"

declare @WRTime datetime
set @WRTime = '2012-11-09 10:52:38.000'

select cast(format(@WRTime,'yyyyMMddHHmmssfff') as bigint) --2012 or higher
0 голосов
/ 06 сентября 2018
select  
cast(replace(replace(replace(convert(varchar(19), WRTime, 121),':',''),'-',''),' ','') as bigint)
FROM HB06
0 голосов
/ 06 сентября 2018

Вы можете попробовать ниже одного

select concat(convert(varchar,WRTime,112),datepart(HH,WRTime),
datepart(MINUTE,WRTime),datepart(SS,WRTime)) from HB06
0 голосов
/ 06 сентября 2018

Вы не можете. Значение слишком велико для типа данных int. Но это вписывается в bigint.

Что вы можете сделать, это преобразовать ее в строку с желаемым форматом, а затем привести ее к типу bigint. Использование функции FORMAT является IMO более простым:

DECLARE @a datetime = '20120304 23:34:12'
SELECT @a
SELECT CAST(FORMAT(@a, 'yyyyMMddhhmmss') AS bigint)

Альтернативой является использование функции CONVERT, которая использует меньше ресурсов процессора. Но нет прямого стиля, который соответствует этому формату, поэтому вы бы затем ЗАМЕНИЛИ () различные символы «мусора» ни с чем. Я бы не стал использовать опцию CONVERT (), если вы не работаете с большими наборами данных.

0 голосов
/ 06 сентября 2018

Используйте ниже функцию преобразования:

SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','')
FROM HB06
...