代码之家  ›  专栏  ›  技术社区  ›  Anthony

将5位整数转换成时间

  •  0
  • Anthony  · 技术社区  · 6 年前

    在传统系统(SQLServer2005)中,我有一个列,其中存储一个5位整数(即86340)作为时间。遗留应用程序显示86340为23:59:00。我不确定如何使用SQL将5位整数转换为日期时间数据类型。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Lukasz Szozda    6 年前

    SQL Server 2012+具有 TIMEFROMPARTS 功能:

    TIMEFROMPARTS(小时、分钟、秒、分数、精度)

    TIME :

    时间(时、分、秒)

    需要分钟。从0到32767的数字,代表一分钟。

    而SQL对等方不能做到这一点。


     DECLARE @A1 INT =  86340;
     SELECT DATEADD(second, @A1,CAST('00:00:00' AS TIME));
    

    DBFiddle Demo

    编辑:

    数据类型,可以使用 DATETIME 而是跳过应用程序中的日期部分。

     DECLARE @A1 INT =  86340;
     SELECT DATEADD(second, @A1,CAST('00:00:00' AS DATETIME));
    

    DBFiddle Demo2

        2
  •  0
  •   Eric Brandt    6 年前

    由于您的值是自午夜起秒数的整数表示,因此在SQLServer2005中有两个选择。可以将值呈现为 VARCHAR ,这是可读的,您可以将其呈现为 DATETIME ,它会附加日期信息,或者您可以从另一个字段中提取日期以获得有意义的结果 为了你的价值。

    SELECT CONVERT(VARCHAR(12), DATEADD(SECOND, 86340, 0), 114) AS [InVarchar];
    
    +--------------+
    |  InVarchar   |
    +--------------+
    | 23:59:00:000 |
    +--------------+
    
    
    SELECT DATEADD(SECOND, 86340, 0) AS [InDatetime];
    
    +-------------------------+
    |       InDatetime        |
    +-------------------------+
    | 1900-01-01 23:59:00.000 |
    +-------------------------+
    
    SELECT DATEADD(SECOND, 86340, CAST('2018-09-05' AS DATETIME)) AS [InDatetimeWithDate];
    
    +-------------------------+
    |   InDatetimeWithDate    |
    +-------------------------+
    | 2018-09-05 23:59:00.000 |
    +-------------------------+
    
        3
  •  -1
  •   Prahalad Gaggar    6 年前

    SELECT CONVERT(DATETIME, @Column_Name)
    FROM Table;