这是我的问题:
这是一个名为HB06的表,“ WRTime”的数据类型为datatime。我想将所有WRTime都转换为int。例如,2012-11-09 10:52:38.000
将转换为20121109105238
。
谢谢!
答案 0 :(得分:2)
不能。对于int数据类型,该值太大。但这确实适合bigint。
您可以做的是将其转换为具有所需格式的字符串,然后将该类型转换为bigint类型。使用FORMAT功能使IMO更加简单:
DECLARE @a datetime = '20120304 23:34:12'
SELECT @a
SELECT CAST(FORMAT(@a, 'yyyyMMddhhmmss') AS bigint)
替代方法是使用CONVERT函数,该函数使用较少的CPU。但是没有与该格式匹配的直接样式,因此您可以不使用任何东西而将REPLACE()各种“乱码”字符替换掉。除非您处理大型数据集,否则我不会理会CONVERT()选项。
答案 1 :(得分:1)
您可以尝试以下一个
select concat(convert(varchar,WRTime,112),datepart(HH,WRTime),
datepart(MINUTE,WRTime),datepart(SS,WRTime)) from HB06
答案 2 :(得分:1)
select
cast(replace(replace(replace(convert(varchar(19), WRTime, 121),':',''),'-',''),' ','') as bigint)
FROM HB06
答案 3 :(得分:0)
在下面的“转换”函数中使用:
SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','')
FROM HB06