簡體   English   中英

Oracle時間戳到sql server DateTime

[英]Oracle timestamp to sql server DateTime

我有來自oracle數據庫的多個語句,我需要在SQL Server中使用它們

insert into COMENZI (NR_COMANDA, DATA, MODALITATE, ID_CLIENT, STARE_COMANDA, ID_ANGAJAT)
values (2456, to_timestamp('08-11-1998 07:53:25.989889', 'dd-mm-yyyy hh24:mi:ss.ff'), 'direct', 117, 0, 163);

insert into COMENZI (NR_COMANDA, DATA, MODALITATE, ID_CLIENT, STARE_COMANDA, ID_ANGAJAT)
values (2457, to_timestamp('01-11-1999 09:22:16.162632', 'dd-mm-yyyy hh24:mi:ss.ff'), 'direct', 118, 5, 159);

如何創建一個返回具有給定值的DateTime的函數to_timestamp?

以下適用於SQL Server 2008( SQL Fiddle ):

select convert(datetime, left(t, 10), 105) +
       convert(time, substring(t, 12, 12), 114)
from (select '01-11-1999 09:22:16.162632' as t) t;

具有諷刺意味的是,它在SQL Server 2012中不起作用。我認為你必須這樣做:

select dateadd(ms, datediff(ms, 0,  convert(datetime, substring(t, 12, 12), 114)),
               convert(datetime, left(t, 10), 105)
              )
from (select '01-11-1999 09:22:16.162632' as t) t;

請注意,在這兩種情況下,這都使用毫秒而不是微秒。 我不相信SQL Server提供那么多精度的日期時間值。

如果您更改此聲明

select convert(datetime, left(t, 10), 105) +
       convert(time, substring(t, 12, 12), 114)
from (select '01-11-1999 09:22:16.162632' as t) t;

select convert(datetime, left(t, 10), 105) +
       convert(datetime, substring(t, 12, 12), 114)
from (select '01-11-1999 09:22:16.162632' as t) t;

它將適用於所有SQL-Server版本

日期 時間時間add-operator中不兼容類型的錯誤僅在SQL-Server 2012中發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM