在Sybase中使用Datediff(... Dateadd(...),Getdate())时键入Clash

时间:2016-07-07 14:19:06

标签: sql sybase-ase getdate

我已经切换公司并且这样做,从SQL Server切换到Sybase-ASE。我无法判断我是否只是一个大脑放屁并且编码错误,或者在Datediff(...Dateadd(...),Getdate())SQL Server中运行Sybase-ASE之间是否存在差异。在运行下面的代码时,我在公式的type clash (INT)侧获得Datediff。单独运行Dateadd可以正常运行。不确定是否需要调整某些内容或者无法在Sybase-ASE中完成。有帮助吗?我查看了其他问题,但没有真正的帮助(Subtract one day from datetime GETDATE last month Get the records of last month in SQL server Datediff GETDATE Add

SELECT TOP 5 *

FROM SalesData fm
WHERE fm.Date = DATEDIFF(MONTH, DATEADD(MONTH,-1,MAX(fm.Date)),GETDATE())

另外,旁边的问题:我不记得上个月的整个具体公式是Datediff,如果有人碰巧知道的话。我可以搞清楚,我认为最好一石二鸟。将Dates表格实施到生产中显然有些困难......

2 个答案:

答案 0 :(得分:1)

在内置函数方面,ASE和SQLServer几乎完全相同。然而,有一点不同,这就是你可能会遇到的。在SQLServer中,您可以对日期使用数值,该值在SQLServer中将自01-01-1900解释为#days。 ASE不支持使用数值作为日期,您将收到语法错误。

答案 1 :(得分:0)

没关系,我得到了这篇文章(Get the records of last month in SQL server

where DATEPART(MONTH,fm.Date) = DATEPART(MONTH, DATEADD(MONTH,-1,GETDATE()))
AND DATEPART(YEAR,fm.Date) = DATEPART(YEAR, DATEADD(YEAR,0,GETDATE()))