0

我有一个日期和时间的专栏。我需要将该列转换为整数格式,如下所示。我试过如何将日期转换为整数格式?

SELECT 
    CAST(SUBSTRING(CAST(CAST(date AS DATETIME) AS BINARY(8)),1,4) AS INT) as Rowdate 
FROM Spend 

但我没有得到下面的格式。你能帮我个忙吗?

日期:

2012-09-11 11:40:51.000 
2012-09-11 11:49:59.000 
2012-09-11 11:37:08.000 
2012-09-11 11:58:44.000 
2012-09-11 12:02:35.000 
2012-09-11 11:47:08.000 
2012-09-11 12:05:34.000 
2012-09-11 11:53:42.000 
2012-09-11 12:02:51.000 
2012-09-11 12:06:09.000 
2012-09-11 11:58:56.000 
2012-09-11 11:58:14.000 
2012-09-11 12:03:28.000 
2012-09-11 11:53:24.000 
2012-09-11 11:59:15.000 
2012-09-11 11:57:08.000 

Rowdate:

2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
2012091116 
+1

好吧,我得到了'20120911'一部分,但是为什么'16'?而且是列数据类型'DATETIME'? – Lamak

+0

@Lamak:是的DATETIME是datatype.I没有得到它的想法,但至少到20120911好像它似乎。 – user3203331

回答

1
DECLARE @TABLE TABLE(Col DATETIME) 
INSERT INTO @TABLE VALUES 
(GETDATE()),(GETDATE()-1),(GETDATE()-3) 


SELECT CONVERT(VARCHAR(8),Col,112) + '16' --<-- Dont know why but here is your 16 
FROM @TABLE 

结果

2014030416 
2014030316 
2014030116 

我加入这个16,因为它是在你的愿望输出,但如果出您只需要'YYYYMMDD'的部分,那么下面的工作就可以完成。

SELECT CONVERT(VARCHAR(8), ColumnName ,112) 
FROM Table_Name 

结果

20140304 
20140303 
20140301 
相关问题