我有一个Oracle SQL脚本,我正在转换为在MS SQL Server中运行。该脚本中包含to_date
函数,并使用RR
日期格式。这是功能:
to_date('07-AUG-14','DD-MON-RR')
我打算像这样使用MS SQL Server函数CONVERT
CONVERT(DATETIME, '07-AUG-14', num)
其中num
是我需要的格式代码。
我应该在MS SQL Server中使用哪些代码来获得与Oracle RR
格式相同类型的功能?
答案 0 :(得分:0)
对于美国日期时间转换,您可以使用:
CONVERT(DATETIME, '07-AUG-14', 10)
-- ^^
对于其他文化, style (第三个参数)会有所不同;但是 style 需要是没有世纪(yy)值才能达到您的目的。
Oracle RR
日期格式的语义也适用于SQL Server的yy
日期样式。 MSDN上的CAST and CONVERT (Transact-SQL) (for SQL Server 2008)解释了......
默认情况下,SQL Server根据2049年的截止年份解释两位数的年份。也就是说,两位数的年份49被解释为2049年,而两位数的年份50被解释为1950年。
...并列出没有世纪(yy)日期样式的数值。
(作为参考,另一个SO答案解释了等效的semantics of Oracle's RR
date format。)
您可以使用以下查询更广泛地确认SQL Server(美国)yy
日期样式的默认语义...
SELECT CONVERT(DATETIME, '07-AUG-14', 10)
SELECT CONVERT(DATETIME, '07-AUG-49', 10)
SELECT CONVERT(DATETIME, '07-AUG-50', 10)
SELECT CONVERT(DATETIME, '07-AUG-51', 10)
...,产量......
2014-08-07 00:00:00.000 -- This century assumed.
2049-08-07 00:00:00.000 -- This century assumed.
1950-08-07 00:00:00.000 -- Last century assumed.
1951-08-07 00:00:00.000 -- Last century assumed.
...默认两位数年份截止配置。 (yy
其他文化的日期样式应该表现相似。)