Sql server 如何在SQLServer2012中将datetime转换为int?
我的问题是: 这是一个名为HB06的表,“WRTime”的数据类型是datatime。我想将所有WRTime转换为int。例如Sql server 如何在SQLServer2012中将datetime转换为int?,sql-server,datetime,sql-server-2012,Sql Server,Datetime,Sql Server 2012,我的问题是: 这是一个名为HB06的表,“WRTime”的数据类型是datatime。我想将所有WRTime转换为int。例如2012-11-09 10:52:38.000将转换为20121109105238 谢谢大家! 使用以下转换功能: SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','') FROM HB06 使用以下转换功能: SELECT CONVERT(VAR
2012-11-09 10:52:38.000
将转换为20121109105238
谢谢大家! 使用以下转换功能:
SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','')
FROM HB06
使用以下转换功能:
SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','')
FROM HB06
你可以试试下面的一个
select concat(convert(varchar,WRTime,112),datepart(HH,WRTime),
datepart(MINUTE,WRTime),datepart(SS,WRTime)) from HB06
你可以试试下面的一个
select concat(convert(varchar,WRTime,112),datepart(HH,WRTime),
datepart(MINUTE,WRTime),datepart(SS,WRTime)) from HB06
你不能。该值对于int数据类型太大。但它确实适合一个bigint 您可以做的是将其转换为所需格式的字符串,然后将其转换为bigint类型。使用FORMAT函数更直接:
DECLARE @a datetime = '20120304 23:34:12'
SELECT @a
SELECT CAST(FORMAT(@a, 'yyyyMMddhhmmss') AS bigint)
另一种方法是使用CONVERT函数,它使用更少的CPU。但是没有与该格式匹配的直接样式,所以您可以将()各种“垃圾”字符替换为零。除非您处理大型数据集,否则我不会使用CONVERT()选项。您不能。该值对于int数据类型太大。但它确实适合一个bigint
select
cast(replace(replace(replace(convert(varchar(19), WRTime, 121),':',''),'-',''),' ','') as bigint)
FROM HB06
您可以做的是将其转换为所需格式的字符串,然后将其转换为bigint类型。使用FORMAT函数更直接:
DECLARE @a datetime = '20120304 23:34:12'
SELECT @a
SELECT CAST(FORMAT(@a, 'yyyyMMddhhmmss') AS bigint)
另一种方法是使用CONVERT函数,它使用更少的CPU。但是没有与该格式匹配的直接样式,所以您可以将()各种“垃圾”字符替换为零。除非处理大型数据集,否则我不会使用CONVERT()选项。SQL 2012版或更高版本您可以使用该函数仅获取年份和月份,然后将其转换为int
select
cast(replace(replace(replace(convert(varchar(19), WRTime, 121),':',''),'-',''),' ','') as bigint)
FROM HB06
在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”
SQL版本2012或更高版本您可以使用该函数仅获取年份和月份,然后将其转换为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”
我链接到的问题的可能重复显示了如何将日期转换为varchar。然后,如果需要,可以将varchar强制转换为int。如果要将其转换为整数,则必须为
bigint
notint
,因为int
s的长度最多只能为10位。但实际上,为什么要更改数据类型?为什么要这样做?我不确定您是否会节省空间,并且整数不适合进行简单的日期运算。我链接到的问题可能重复显示了如何将日期转换为varchar。然后,如果需要,可以将varchar强制转换为int。如果要将其转换为整数,则必须为bigint
notint
,因为int
s的长度最多只能为10位。但实际上,为什么要更改数据类型?为什么要这样做?我不确定您是否会节省空间,而且整数不适合进行简单的日期运算。@HaohaoQi那么您应该将答案标记为已接受的答案,以便其他人看到它对您有效@那么你应该将答案标记为已接受的答案,以便其他人看到它对你有用!这会将小时更改为12小时格式,并删除毫秒。使用此命令:CAST(格式(@a,'yyyymmddhhmmssff')作为bigint)
此命令将小时更改为12小时格式并删除毫秒。使用此:CAST(格式(@a,'yyyymmddhhmmssff')作为bigint)