如何在SQL Server2012中将datetime转换为int?

时间:2018-09-06 07:15:00

标签: sql-server datetime sql-server-2012

这是我的问题: 这是一个名为HB06的表,“ WRTime”的数据类型为datatime。我想将所有WRTime都转换为int。例如,2012-11-09 10:52:38.000将转换为20121109105238

Image

谢谢!

4 个答案:

答案 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