2016-07-07 89 views
0

Ich habe Unternehmen gewechselt und dabei von SQL Server auf Sybase-ASE umgestellt. Ich kann nicht sagen, ob ich nur ein Gehirn furzen und Codierung falsch habe oder wenn es einen Unterschied zwischen Datediff(...Dateadd(...),Getdate()) in SQL Server und Sybase-ASE läuft. Ich bekomme eine type clash (INT) auf der Datediff Seite der Formel, wenn Sie den Code unten ausführen. Running Dateadd an sich funktioniert gut. Ich bin mir nicht sicher, ob etwas geändert werden muss, oder es kann einfach nicht in Sybase-ASE getan werden. Irgendeine Hilfe? Ich habe diese Fragen, aber keine wirkliche Hilfe (Subtract one day from datetimeGETDATE last monthGet the records of last month in SQL serverDatediff GETDATE Add)Typ Clash bei der Verwendung von Datediff (... Dateadd (...), Getdate()) in Sybase

SELECT TOP 5 * 

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

AUCH Seite Frage: Ich kann mich nicht erinnern, was die spezifische Formel ist ganz im letzten Monat zu bekommen, ist in Datediff wenn jemand geschieht wissen. Ich kann mir vorstellen, dass ich am liebsten zwei Fliegen mit einer Klappe schlagen würde. Es ist offensichtlich etwas schwierig, einen Dates Tisch in der Produktion ...

Antwort

0

Nevermind umgesetzt zu bekommen, ich habe es dank diesen Beitrag (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())) 
1

Auf dem Punkt der integrierten Funktionen, ASE und SQLServer sind fast identisch. Es gibt jedoch einen Unterschied, und das ist es, was Sie treffen können. In SQLServer können Sie einen numerischen Wert für ein Datum verwenden, das seit 01.01.1900 im SQL Server als #days interpretiert wird. ASE unterstützt die Verwendung numerischer Werte als Datum nicht und Sie erhalten einen Syntaxfehler.