在 T-SQL 中使用来自 Oracle 的 TRUNC 函数
Using TRUNC function from Oracle in T-SQL
所以我正在执行从 Oracle 到 MS SQL Server 2012 的过程和函数转换。
在 Oracle 中,我有以下 select 语句:
--Add 5 months less one day to the quarter, ie 1/1/09 returns 5/31/09
SELECT ADD_MONTHS(TRUNC(to_date('1-dec-2017'), 'q'), 5) - 1 FROM DUAL;
我在 return 中得到以下值:
28-FEB-18
我正在尝试将其转换为 MS SQL 服务器,例如:
SELECT dateadd(m, 0, convert(datetime, dateadd(q, 5,convert(datetime,'1-dec-2017')))) - 1
我得到以下结果:2019-02-28 00:00:00.000
我不确定为什么我要在 T-SQL 多学一年。我将不胜感激。谢谢。
要截断到四分之一,请参阅What is the best way to truncate a date in SQL Server?
SELECT DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)
增加五个月。
SELECT DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0))
减去一天
SELECT DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)) - 1
SELECT DATEADD(D, -1, DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)))
所以我正在执行从 Oracle 到 MS SQL Server 2012 的过程和函数转换。
在 Oracle 中,我有以下 select 语句:
--Add 5 months less one day to the quarter, ie 1/1/09 returns 5/31/09
SELECT ADD_MONTHS(TRUNC(to_date('1-dec-2017'), 'q'), 5) - 1 FROM DUAL;
我在 return 中得到以下值:
28-FEB-18
我正在尝试将其转换为 MS SQL 服务器,例如:
SELECT dateadd(m, 0, convert(datetime, dateadd(q, 5,convert(datetime,'1-dec-2017')))) - 1
我得到以下结果:2019-02-28 00:00:00.000
我不确定为什么我要在 T-SQL 多学一年。我将不胜感激。谢谢。
要截断到四分之一,请参阅What is the best way to truncate a date in SQL Server?
SELECT DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)
增加五个月。
SELECT DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0))
减去一天
SELECT DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)) - 1
SELECT DATEADD(D, -1, DATEADD(M, 5, DATEADD(Q, DATEDIFF(Q, 0, convert(datetime,'1-dec-2017')), 0)))