【问题标题】:How can i convert a date to an integer format?如何将日期转换为整数格式?
【发布时间】:2014-04-06 14:43:12
【问题描述】:

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

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

行日期:

2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116
2012091116

【问题讨论】:

  • 好的,我得到了20120911 部分,但为什么是16?,列数据类型是DATETIME
  • @Lamak:是的,DATETIME 是数据类型。我不明白,但至少到 20120911 似乎还不错。

标签: sql-server-2008 tsql datetime sql-server-2008-r2 date-conversion


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2014-02-25
    • 2017-12-11
    • 2023-04-08
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多