2013-05-08 114 views
1

2列我有一个包含加入包含日期和时间信息为日期时间

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

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

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 
------------------ 

任何人都可以共享查询PL。

+0

什么[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)你正在使用? 'RDBMS'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等等。 – 2013-05-08 08:20:44

+0

SQL是各种不同产品或多或少地实施的语言。日期/时间处理是语言功能和支持方面存在大量差异的领域,因此我们需要知道您正在使用的产品。请为您的RDBMS产品添加合适的标签。 – 2013-05-08 08:22:13

+0

我正在使用SQL 2008 R2 – 2013-05-08 08:22:30

回答

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列在首位?

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

0

SQLFiddle demo

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 
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