Sql-Server

SQL Server 中 Oracle RR 日期格式的等價物

  • August 8, 2019

在 Oracle 中生成了一堆 SQL 插入腳本,我需要調整它們以在 Microsoft SQL Server 中與 T-SQL 一起使用。

Oracle 導出的日期格式如下:

to_date('01.02.28','DD.MM.RR')

RR意味著0 到 49 之間的值假定目前世紀,而 50 到 99 假定上一世紀。

我目前沒有看到與該表示法等效的 SQL Server。

我能想到的唯一解決方案是編寫一個快速腳本,執行一些正則表達式和/或字元串操作來檢測數值並自己添加世紀,以便我可以YYYY用於 SQL Server。

我的問題:

有沒有辦法RR用 T-SQL 表達?

我的問題:

有沒有辦法在 T-SQL 中表達 RR?

例如,可以這樣做

-- from date to string
SELECT FORMAT(datetime_field, CASE WHEN YEAR(datetimefield) > 49 
                                  THEN 'yyyy-MM-dd' 
                                  ELSE 'yy-MM-dd' 
                                  END) AS date_formatted_as_RR, ...

-- from string to date
SELECT DATEFROMPARTS(CASE WHEN CAST(SUBSTRING(string_field,7,2) AS INT)>49
                         THEN CAST(SUBSTRING(string_field,7,2) AS INT)+2000
                         ELSE CAST(SUBSTRING(string_field,7,2) AS INT)+2100
                         END,
                    CAST(SUBSTRING(string_field,4,2) AS INT),
                    CAST(SUBSTRING(string_field,1,2) AS INT)) AS date_interpreted_as_RR, ...

引用自:https://dba.stackexchange.com/questions/244722