Sql 将yyyymmdd、hhmmss和sss列合并到datetime

Sql 将yyyymmdd、hhmmss和sss列合并到datetime,sql,sql-server,tsql,datetime,Sql,Sql Server,Tsql,Datetime,表IFCD结构如下: tdate ttime updatemillisec 20140730 093014 500 ... 如何将列合并为一个名为tdatetime的列,格式为yyyy-mm-dd hh:mm:ss.mmm 我的答覆是: SELECT CAST(LEFT(tdate, 4)+'-'+substring(tdate, 5, 2)+'-'+RIGHT(tdate, 2)+' '+ LEFT(ttime, 2)+':'+sub

表IFCD结构如下:

tdate       ttime     updatemillisec
20140730    093014    500
...
如何将列合并为一个名为tdatetime的列,格式为yyyy-mm-dd hh:mm:ss.mmm

我的答覆是:

SELECT CAST(LEFT(tdate, 4)+'-'+substring(tdate, 5, 2)+'-'+RIGHT(tdate, 2)+' '+ 
            LEFT(ttime, 2)+':'+substring(ttime, 3, 2)+':'+RIGHT(ttime, 2)+'.'+ 
            CAST(updatemillisec AS varchar) AS DateTime)

请试试这个。您必须将ttime和UPDATEMILISEC连接起来,并将其转换为以下格式
hh:mm:ss.MMM
。使用该格式后,以
YYYYMMDD hh:mm:ss.MMM

DECLARE @Table TABLE (tdate VARCHAR(10),
                  ttime VARCHAR(10),
                  updatemillisec VARCHAR(10))
INSERT INTO @Table
VALUES('20140730', '093014', '500')

SELECT CAST(
          ( tdate + ' ' 
          + LEFT(ttime, 2) + ':' 
          + SUBSTRING(ttime, 3, 2) + ':' 
          + RIGHT(ttime, 2) + '.' 
          + updatemillisec) AS DATETIME
         ) AS tDateTime
FROM @Table
作为提示:函数,再加上一些子字符串()和连接。当你说“解决方案:…”时,这是否意味着这就是你提出的解决方案?如果是这样的话,你应该把它作为一个答案发布并接受它。
DECLARE @T TABLE (tdate VARCHAR(10)
    ,ttime VARCHAR(10)
    ,Updatemillisec VARCHAR(10))

INSERT INTO @T
VALUES ('20140730','093014','500')

SELECT CONVERT(VARCHAR(25), LEFT(tdate, 4) + '-' + 
                            SUBSTRING(tdate, 5, 2) + '-' + 
                            RIGHT(tdate, 2) + SPACE(1) + 
                            LEFT(ttime, 2) + ':' + 
                            SUBSTRING(ttime, 2, 2) + ':' + 
                            RIGHT(ttime, 2) + '.' + 
                            Updatemillisec, 109)
FROM @T