我在一个数据类型为varchar的表中有两列。
date和type是表中的列名。
表中的数据如下所示
date time
20090610 132713
20090610 132734
我需要ms sql server查询来连接这2列数据,并显示为日期时间格式。
注意: 1.现在不能更改这两列的数据类型。2.我试过了
select convert(datetime,date + time)
它显示“从字符串转换日期和/或时间时转换失败”。
建议可能的解决方案。
发布于 2012-12-20 16:26:06
这将返回一个日期时间。底线将替换为您的表
select convert(datetime,date,112)+
coalesce(stuff(stuff(rtrim(time), 5,0,':'), 3,0,':'), '') newdate
from
(VALUES ('20090610','132713'),('20090610', '132734'),('20090610', ' ')) yourtable(date,time)
结果:
newdate
2009-06-10 13:27:13.000
2009-06-10 13:27:34.000
2009-06-10 00:00:00.000
发布于 2012-12-20 15:58:30
您可以使用以下命令获取它:
SELECT
convert(varchar, convert(datetime, date), 111)
+ ' ' + substring(time, 1, 2)
+ ':' + substring(time, 3, 2)
+ ':' + substring(time, 5, 2)
发布于 2012-12-20 16:44:08
CREATE TABLE #Table
(
[date] VARCHAR(100),
[time] VARCHAR(100)
)
INSERT INTO #Table VALUES
('20090610','132713'),
('20090610','132734')
;WITH Bits_CTE
AS
(
SELECT
[Date],
[Time],
[hrs] = CONVERT(INT,SUBSTRING([Time], 1, 2)),
[mns] = CONVERT(INT,SUBSTRING([Time], 3, 2)),
[secs] = CONVERT(INT,SUBSTRING([Time], 5, 2))
FROM #Table
)
SELECT
[Date],
[Time],
DATEADD(HOUR,[hrs],
DATEADD(MINUTE,[mns],
DATEADD(SECOND,[secs],[Date])))
FROM Bits_CTE
https://stackoverflow.com/questions/13967043
复制相似问题