发布
社区首页 >问答首页 >合并2 varchar列的数据并转换为datetime

合并2 varchar列的数据并转换为datetime
EN

Stack Overflow用户
提问于 2012-12-20 15:16:17
回答 4查看 2.6K关注 0票数 1

我在一个数据类型为varchar的表中有两列。

date和type是表中的列名。

表中的数据如下所示

代码语言:javascript
代码运行次数:0
复制
date        time
20090610    132713
20090610    132734

我需要ms sql server查询来连接这2列数据,并显示为日期时间格式。

注意: 1.现在不能更改这两列的数据类型。2.我试过了

代码语言:javascript
代码运行次数:0
复制
select convert(datetime,date + time)

它显示“从字符串转换日期和/或时间时转换失败”。

建议可能的解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-20 16:26:06

这将返回一个日期时间。底线将替换为您的表

代码语言:javascript
代码运行次数:0
复制
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)

结果:

代码语言:javascript
代码运行次数:0
复制
newdate
2009-06-10 13:27:13.000
2009-06-10 13:27:34.000
2009-06-10 00:00:00.000
票数 2
EN

Stack Overflow用户

发布于 2012-12-20 15:58:30

您可以使用以下命令获取它:

代码语言:javascript
代码运行次数:0
复制
SELECT 
convert(varchar, convert(datetime, date), 111)
+ ' ' + substring(time, 1, 2)
+ ':' + substring(time, 3, 2)
+ ':' + substring(time, 5, 2)
票数 0
EN

Stack Overflow用户

发布于 2012-12-20 16:44:08

代码语言:javascript
代码运行次数:0
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13967043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档