小编典典

Oracle时间戳到SQL Server DateTime

sql

我有多个来自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);

如何创建函数to_timestamp返回具有给定值的DateTime?


阅读 185

收藏
2021-04-14

共1个答案

小编典典

以下在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可以提供如此精确的日期时间值。

2021-04-14