我需要删除部分日期(存储在我的数据库表中作为日期时间字段),格式为' YYYYMMDD'。我希望输出是一个整数。
例如,日期时间2017-03-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就像我想的那样等。
必须有一个更好的方法,任何帮助赞赏!
答案 0 :(得分:1)
咦?只需转换为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
答案 1 :(得分:1)
CONVERT
(格式为YYYYMMDD
):
SELECT CONVERT(VARCHAR(8),transcriptCreationDateUTC,112)
如果您确实需要将结果作为INT,请包含CAST(... AS INT)
:
SELECT CAST(CONVERT(VARCHAR(8),transcriptCreationDateUTC,112) AS INT)