组合单独的日期和时间列SQL

时间:2014-01-08 13:01:19

标签: sql sql-server-2008 tsql

我有一个我正在使用的数据库,设计前端软件的白痴认为有必要创建一个单独的日期和时间字段,但是将Date列留为DATETIME列,将Time留作VARCHAR列。

基本上我的日期和时间看起来像这样:

日期|时间

2007-10-06 00:00:00.000 | 1135

而不是仅将2下1列合并为正确的日期时间。

我试图将2组合在一起,所以我可以完全实现这一点,一个适当的DATETIME字段,它将两组信息组合成即。

2007-10-06 11:35:00.000

这一点我正在努力。

我以为我可以逃脱

DECLARE @date DATETIME
DECLARE @time VARCHAR

SET @date = '2007-10-06 00:00:00.000'
SET @time = '1125'

SELECT TOP 1
    @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 2 , 2)
              + ':00' )

不幸的是,现在我觉得我正在过度思考这个问题,只是碰到了墙后的墙。

任何人都可以协助解决这个问题,并指出我出错的地方:/

2 个答案:

答案 0 :(得分:3)

定义varchar变量@time的大小。默认值为1.

您还需要将第二个子字符串更改为3,2

DECLARE @date DATETIME
DECLARE @time VARCHAR(4)

SET @date = '2007-10-06 00:00:00.000'
SET @time = '1125'

SELECT TOP 1
    @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2)
              + ':00' )

答案 1 :(得分:2)

以下是我的写作方式

DECLARE @date DATETIME = '2007-10-06T00:00:00'
DECLARE @time VARCHAR(4) = '1125'

SELECT @date + stuff(@time, 3,0, ':')