将TRUNC(TO_NUMBER(TO_DATE(SYSDATE) - MyTable.DOBDATE)/ 365,0)从Oracle转换为SQL Server?

时间:2017-08-20 15:49:12

标签: sql oracle date-arithmetic

我正在将Oracle查询转换为SQL Server等价物,有些比其他查询更容易,现在我被困在一个包含在where子句中的查询

TRUNC(TO_NUMBER(TO_DATE(SYSDATE) - MyTable.DOBDATE) / 365, 0)

我已经读过Convert是SQL Server等同于ORACLE的TRUNC,

我知道SYSDATE将是GetDate(),但我在查询的这一部分丢失了

TRUNC(TO_NUMBER(TO_DATE(SYSDATE)

SQL Server与此等价的是什么?

修改 简而言之,我如何采用这个Oracle声明

TRUNC(TO_NUMBER(TO_DATE(SYSDATE) - MyTable.DOBDATE) / 365, 0)

并转换为其SQL Server等效项

1 个答案:

答案 0 :(得分:0)

等价物是:

In [805]: df.groupby(df.index % 4).vals.sum()
Out[805]:
0    14.0
1     9.5
2    17.0
3    28.0
Name: vals, dtype: float64

请注意,SQL Server执行整数除法,因此结果为整数。无需额外的功能。

我认为select datediff(day, MyTable.DOBDate, getdate()) / 365 在Oracle中是多余的。这两组代码都没有精确计算年龄,因为两者都没有考虑到闰年。