2015-06-09 48 views
2

我需要轉換2014-11-18T14:08:43 + 00:00這是在我的SQL開發日期格式的varchar中,以便過濾一些條目。在sql中轉換字符串

我試圖

to_date(LAST_UPDATE_DATE,'YYYY-MM-DD')

,但它提供了一個錯誤

ORA-01830:轉換整個輸入串 前日期格式畫面結束。

請幫助..

+1

爲什麼你的約會colunm VARCHAR? –

+0

你運行的是哪個版本的sql server?對我來說它說to_date不被識別 –

+3

SQL Server返回ORA錯誤代碼?很奇怪。 – jarlh

回答

0

以防萬一你不是故意放的SQL Server,而是你需要使用Oracle(看到,因爲你正在使用TO_DATE和您購買的ORA除外) 我添加了日期和時間戳(沒有毫秒)的快速轉換日期時間爲您日期格式:

SELECT to_Date(concat 
       (substr 
       (myvar,0,10), 
       concat(' ', 
         substr(myvar,12,8) 
        ) 
       ),'YYYY-MM-DD HH24:mi:ss') AS mydate 
FROM mytable 

Fiddle

0
declare @varDate as nvarchar(50) = '2014-11-18T14:08:43+00:00' 

select CAST(substring(@varDate,0,CHARINDEX('T',@varDate)) as date) 
+3

sql服務器語法如何爲Oracle數據庫工作? –

+0

@LalitKumarB我想知道同樣的事情,或者她是如何得到ora錯誤的,當標籤是sql服務器時,這真是令人困惑 –

+0

它被標記爲'sql'' sql-server',它後來編輯了 –

0

你可以試試這個;

Select CAST ('2014-11-18T14:08:43+00:00' as date) 

的假設是你在SQL Server 2012中

0

ORA-01830:轉換整個輸入字符串之前的日期格式的畫面結束。 TO_DATE(LAST_UPDATE_DATE, 'YYYY-MM-DD')

2014-11-18T14:08:43+00:00TIMESTAMP和不DATE

首先,你應該永遠日期/ TIMSTAMP字符串。這是一個數據庫設計缺陷。您可以將其轉換爲TIMESTAMP WITH TIMEZONE

例如,

SQL> SELECT to_timestamp_tz('2014-11-18T14:08:43+00:00', 
    2       'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') 
    3       AS tm_stamp 
    4 FROM dual; 

TM_STAMP 
---------------------------------------------------------------- 
18-NOV-14 02.08.43.000000000 PM +00:00 

SQL> 
+0

@Isha'ORA'錯誤證明你的數據庫是'Oracle'而不是'sql server'。 –