2016-07-07 9 views
0

Я переключил компании и при этом переключился с SQL Server на Sybase-ASE. Я не могу сказать, есть ли у меня мозговой пупок и неправильно кодируюсь, или если есть разница между запуском Datediff(...Dateadd(...),Getdate()) в SQL Server и Sybase-ASE. Я получаю type clash (INT) на стороне Datediff формулы при запуске кода ниже. Запуск Dateadd сам по себе отлично работает. Не уверен, что нужно что-то изменить или это невозможно сделать в Sybase-ASE. Любая помощь? Я проверил эти и другие вопросы, но никакой реальной помощи (Subtract one day from datetimeGETDATE last monthGet the records of last month in SQL serverDatediff GETDATE Add)Тип Clash при использовании Datediff (... Dateadd (...), Getdate()) в Sybase

SELECT TOP 5 * 

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

ТАКЖЕ, побочный вопрос: Я не могу вспомнить, что конкретная формула, чтобы получить весь прошлый месяц в Datediff, если кто-нибудь случится знать. Я могу понять это, я просто подумал, что лучше всего убить двух зайцев одним выстрелом. Это, видимо, довольно трудно получить Dates таблицу реализованных в производство ...

ответ

1

С точкой встроенных функций, ASE и SQLServer почти идентичны. Однако есть одна разница, и это то, что вы можете поразить. В SQLServer вы можете использовать числовое значение для даты, которое интерпретируется в SQLServer как #days с 01-01-1900. ASE не поддерживает использование числовых значений в качестве даты, и вы получите синтаксическую ошибку.