【问题标题】:How to convert datetime to int in sql server2012?如何在 sql server 2012 中将 datetime 转换为 int?
【发布时间】:2019-02-11 09:14:27
【问题描述】:

这是我的问题: 这是一个名为 HB06 的表,“WRTime”的数据类型是 datatime。我想将所有 WRTime 转换为 int。例如2012-11-09 10:52:38.000 将转换为20121109105238

谢谢!

【问题讨论】:

  • 我链接的问题显示了如何将日期转换为 varchar。然后,如果需要,您可以将 varchar 转换为 int。
  • 如果您要将其转换为整数,则它需要是 bigint 而不是 int,因为 ints 最多只能有 10 位数字。但说真的,你为什么要改变数据类型呢?
  • 为什么要这样做?我不确定您是否会节省任何空间,并且整数不适合简单的日期算术。

标签: sql-server datetime sql-server-2012


【解决方案1】:

你不能。对于 int 数据类型,该值太大。但它确实适合 bigint。

您可以做的是将其转换为具有所需格式的字符串,然后将该 ti 转换为 bigint 类型。 IMO 使用 FORMAT 函数更直接:

DECLARE @a datetime = '20120304 23:34:12'
SELECT @a
SELECT CAST(FORMAT(@a, 'yyyyMMddhhmmss') AS bigint)

另一种方法是使用 CONVERT 函数,它使用较少的 CPU。但是没有与该格式匹配的直接样式,因此您将 REPLACE() 各种“垃圾”字符一无所有。除非您处理大型数据集,否则我不会使用 CONVERT() 选项。

【讨论】:

  • 这会将小时更改为 12 小时格式并删除毫秒。使用这个:CAST(FORMAT(@a, 'yyyyMMddHHmmssfff') AS bigint)
【解决方案2】:
select  
cast(replace(replace(replace(convert(varchar(19), WRTime, 121),':',''),'-',''),' ','') as bigint)
FROM HB06

【讨论】:

  • @HaohaoQi 然后你应该将答案标记为已接受的答案,以便其他人看到它对你有用!
【解决方案3】:

你可以试试下面的一个

select concat(convert(varchar,WRTime,112),datepart(HH,WRTime),
datepart(MINUTE,WRTime),datepart(SS,WRTime)) from HB06

【讨论】:

    【解决方案4】:

    使用下面的转换函数:

    SELECT CONVERT(VARCHAR(100),WRTime,112)+REPLACE(CONVERT(VARCHAR(100),WRTime,108),':','')
    FROM HB06
    

    【讨论】:

      【解决方案5】:

      SQL 版本 2012 或更高版本,您可以使用 FORMAT 函数获取年和月,然后将其转换为 int。

      在 2012 之前的版本中,您可以使用 convert 函数进行格式化,然后转换为 int。

      declare @WRTime datetime
      set @WRTime = '2012-11-09 10:52:38.000'
      
      select cast(format(@WRTime,'yyyyMM') as int) --2012 or higher
      

      或者你可以使用:

      SELECT YEAR(@WRTime)*100 + MONTH(@WRTime);
      

      2012-11-09 10:52:38.000 将转换为 20121109105238??

      Int 不能转换这个所以使用"BIGINT"

      declare @WRTime datetime
      set @WRTime = '2012-11-09 10:52:38.000'
      
      select cast(format(@WRTime,'yyyyMMddHHmmssfff') as bigint) --2012 or higher
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        • 2017-09-18
        • 2011-06-24
        相关资源
        最近更新 更多