我有一个我正在使用的数据库,设计前端软件的白痴认为有必要创建一个单独的日期和时间字段,但是将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' )
不幸的是,现在我觉得我正在过度思考这个问题,只是碰到了墙后的墙。
任何人都可以协助解决这个问题,并指出我出错的地方:/
答案 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, ':')