2017-09-13 43 views
0

我需要以「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,因爲我願意。

必須有更好的方式,任何幫助讚賞!

回答

1

CONVERT風格112(這是YYYYMMDD格式):

SELECT CONVERT(VARCHAR(8),transcriptCreationDateUTC,112) 

如果你真正需要的結果作爲INT,包裹在一個CAST(... AS INT)

SELECT CAST(CONVERT(VARCHAR(8),transcriptCreationDateUTC,112) AS INT) 
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 
+0

作爲整數,CAST(CONVERT(char(8),transcriptCreationDateUTC,112) AS int)。 –

+0

使用強制轉換爲日期沒有得到所需的輸出,例如2017-03-28 20:44:35.000轉換爲2017-03-28不是20170328.我需要輸出爲該形式的整數,而不是一個約會。 –

+0

謝謝丹,指甲! –

相關問題