将年,月和日期从日期时间字段中除去为int
问题描述:
我需要以“YYYYMMDD”的形式去除部分日期(作为日期时间字段存储在我的数据库表中)。我希望输出是一个整数。将年,月和日期从日期时间字段中除去为int
例如日期时间2017年3月28日20:44:35.000将转换为20170328.
这是迄今为止我尝试:
CAST(
CAST(DATEPART(year,transcriptCreationDateUTC) AS varchar(4))
+ CAST(DATEPART(month,transcriptCreationDateUTC) AS varchar(4))
+ CAST(DATEPART(day,transcriptCreationDateUTC) AS varchar(4))
AS int)
这是丑陋的,至少可以说,和也有它在月份和日期字段中删除前导零的问题,所以例如2017-03-28 20:44:35.000转换为2017328而不是20170328,因为我愿意。
必须有更好的方式,任何帮助赞赏!
答
CONVERT
风格112(这是YYYYMMDD
格式):
SELECT CONVERT(VARCHAR(8),transcriptCreationDateUTC,112)
如果你真正需要的结果作为INT,包裹在一个CAST(... AS INT)
:
SELECT CAST(CONVERT(VARCHAR(8),transcriptCreationDateUTC,112) AS INT)
答
咦?只是转换为date
:
select cast(transcriptCreationDateUTC as date)
如果你想这是一个字符串:
select format(transcriptCreationDateUTC, 'yyyyMMdd')
如果您使用的是预2012版本的SQL Server,你可以这样做:
select convert(varchar(10), transcriptCreationDateUTC, 112)
如果你想要这些作为一个整数(这是不明显的,因为你的查询返回一个字符串),只要将它们转换为一个整数:
select cast(format(transcriptCreationDateUTC, 'yyyyMMdd') as int)
或使用该算法:
select (year(transcriptCreationDateUTC) * 10000 +
month(transcriptCreationDateUTC) * 100 +
day(transcriptCreationDateUTC)
) as yyyymmdd
作为整数,CAST(CONVERT(char(8),transcriptCreationDateUTC,112) AS int)。 –
使用强制转换为日期没有得到所需的输出,例如2017-03-28 20:44:35.000转换为2017-03-28不是20170328.我需要输出为该形式的整数,而不是一个约会。 –
谢谢丹,指甲! –