1

我有 2 列包含

DATE (Varchar),Time (Varchar)
=============================
20121231, 172109
-----------------
20130502, 163107
-----------------
20130502, 163148
------------------
20130502, 163206
------------------
20130502, 163207
-------------------

我想合并为 1 个日期时间列,预期结果应该是。

2012-12-31 17:21:09
------------------
2013-05-02 16:31:07
------------------
2013-05-02 16:31:48
------------------
2013-05-02 16:32:06
------------------
2013-05-02 16:32:07
------------------

有人可以分享查询吗?

4

4 回答 4

0

请检查这个

SELECT  REPLACE(CONVERT(VARCHAR(30),
    CONVERT(DATETIME,TM.DateValue),120 ),' 00:00:00',' ')
    +STUFF(STUFF(TM.TimeValue, 3,0,':'),6,0,':')
    FROM TableName TM
于 2013-05-08T09:23:30.153 回答
0

试试这个,

这将输出一个数据类型为DATETIME

CONVERT(DATETIME,STUFF(STUFF([date],5,0,'-'), 8,0, '-') + ' ' + STUFF(STUFF([time],3,0,':'),6,0,':'))

这将输出一个STRING

STUFF(STUFF([date],5,0,'-'), 8,0, '-') + ' ' + STUFF(STUFF([time],3,0,':'),6,0,':')

后续问题,您为什么首先将日期/时间保存为不同列中的 varchar?

于 2013-05-08T08:30:56.170 回答
0

SQLFiddle 演示

select convert(datetime,LEFT([DATE],4)
                        +'-'+
                        SUBSTRING([DATE],5,2)+
                        +'-'+
                        RIGHT([DATE],2)+
                        ' '+
                        LEFT([TIME],2)
                        +':'+
                        SUBSTRING([TIME],3,2)+
                        +':'+
                        RIGHT([TIME],2)
                        ,120)
from t
于 2013-05-08T08:37:39.373 回答
0
select SUBSTRING ( date ,0 , 5 )+
              '-'+
              SUBSTRING ( date ,5 , 2 )+
              '-'+
              SUBSTRING ( date ,7 , 2 )+
              ' '+
              SUBSTRING ( time ,0 , 3 )+
              ':'+
              SUBSTRING ( time ,3 , 2 )+
              ':'+
              SUBSTRING ( time ,5 , 2 )
               as datetime
              from datetime;

SQLFIDDLE

于 2013-05-08T08:36:35.380 回答