在旧版系统(SQL Server 2005)中,我有一列存储一个5位整数(即86340)作为时间。旧版应用程序将86340显示为23:59:00。我不确定如何使用SQL将5位整数转换为日期时间数据类型。
答案 0 :(得分:2)
SQL Server 2012+具有TIMEFROMPARTS
功能:
时间段(小时,分钟,秒,分数,精度)
返回指定时间和指定精度的时间值。
与Excel的TIME
类似:
时间(小时,分钟,秒)
Excel版本可以处理0-60范围内的值:
需要分钟。从0到32767的数字表示分钟。 任何大于59的值都将转换为小时和分钟。
SQL对手无法做到这一点。
该值似乎只是秒数,因此您可以使用:
DECLARE @A1 INT = 86340;
SELECT DATEADD(second, @A1,CAST('00:00:00' AS TIME));
编辑:
由于SQL Server 2005不支持TIME
数据类型,因此可以改用DATETIME
并跳过应用程序中的日期部分。
DECLARE @A1 INT = 86340;
SELECT DATEADD(second, @A1,CAST('00:00:00' AS DATETIME));
答案 1 :(得分:0)
由于您拥有的值是从午夜开始的秒数的整数表示,因此在SQL Server 2005中可以有两种选择。您可以将值呈现为VARCHAR
(可读),可以呈现它以DATETIME
的形式添加日期信息,或者您可以从另一个字段中提取日期以获取有意义的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 |
+-------------------------+
答案 2 :(得分:-1)
在查询下面使用:
SELECT CONVERT(DATETIME, @Column_Name)
FROM Table;