簡體   English   中英

在SQL Server和Oracle中格式化1800日期

[英]Format 1800 date in SQL Server & Oracle

我在SQL Server 2008數據庫中有以下日期: 06-24-1881 00:00:00:000作為DOB ,它存儲為datetime

我需要將這些數據復制到我們的Oracle 11g數據庫中,並且據我所知,Oracle不接受以毫秒為單位的Datetime列。 對於1900年以后的數據,我將其轉換為smalldatetime並可以使用,但是對於此數據,由於不允許1/1/1900之前的日期,因此不會轉換為smalldatetime

如何將多行數據放入Oracle數據庫?

我嘗試了這個:

left(DOB, 19) as DOB

但這使數據顯示為“ Jun 24 1881 12:00 AM”,因此我嘗試插入:

to_date('Jun 24 1881 12:00AM', 'MON-DD-YYYY HH:MI:SSAM') 

那也不起作用。 我被困住了,需要幫助。

CONVERT(VARCHAR(20),@Date,101)將給您06/24/1881,我現在正在尋找代碼。

REPLACE(CONVERT(VARCHAR(200),@Date,101),'/','-') + ' 00:00:00:000'

很奇怪,我用CONVERT嘗試了很多世紀的代碼,它適用於101和其他一些代碼,但是您想要的113失敗了,但是因為您沒有分鍾,小時,秒等,所以您可以采用101格式並操作串到你想要的。

    DECLARE @Date DATE = '06-24-1881 00:00:00:000'

    SELECT @Date
        ,FORMAT(@Date, 'MM-dd-yyyy HH:mm:ss')
,REPLACE(CONVERT(VARCHAR(200),@Date,101),'/','-') + ' 00:00:00:000'

請注意, FORMAT(@Date, 'MM-dd-yyyy HH:mm:ss')是SQL 2012或更高版本,並且運行良好。

Jun 24 1881 12:00AM與Oracle格式字符串MON DD YYYY HH12:MIAM 您的格式掩碼增加了Oracle試圖匹配但未在輸入中找到的秒:SS掩碼,因此將拋出ORA-01861: literal does not match format string異常ORA-01861: literal does not match format string

因此,如果SQL Server的輸出是這種格式,那么在Oracle中,您應該可以執行以下操作:

TO_DATE( 'Jun 24 1881 12:00AM', 'MON DD YYYY HH12:MIAM' )

暫無
暫無

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

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