2013-05-08 111 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