Kurt Jimenez Ответов: 4

Com.microsoft.sqlserver.jdbc.sqlserverexception: функция datediff требует 3 аргумента(ов).


Строка car_id = txtcarid.getText();

пст = кон.prepareStatement("выберите Car_ID,Cust_ID,Rental_Due,функция datediff(getdate(),то Rental_Due) как Days_Elapse от Сагкегла где Car_ID =? ");
pst.setString(1, car_id);
РС = пст.метод executequery();

Что я уже пробовал:

Что плохого в этом утверждении? Пожалуйста помочь

4 Ответов

Рейтинг:
31

Kris Lantz

Ваша функция datediff требует трех аргументов в формате:

DATEDIFF(interval, date1, date2)
а вы поставили только два.
Взгляните здесь на некоторые примеры. Функция SQL Server DATEDIFF() [^]


Kurt Jimenez

Спасибо!

Рейтинг:
28

Richard MacCutchan

Цитата:
Что плохого в этом утверждении?
Именно то, что там написано. Перейдите к документации для DATEDIFF, чтобы узнать, какие параметры требуются: DATEDIFF (Transact-SQL) - SQL Server | Microsoft Docs[^]


Kurt Jimenez

Спасибо!

Рейтинг:
14

MadMyche

Ошибка находится в вашем фактическом SQL-операторе. То функция DateDiff функция требует 3 параметров; и находится в формате DATEDIFF(datepart, startdate, enddate )

Основываясь на псевдониме, который вы назначили функции (Days_Elapse), я предполагаю, что вы хотели бы использовать что-то вроде этого:

SELECT Car_ID
,      Cust_ID
,      Rental_Due
,      DATEDIFF(DD, GETDATE(),Rental_Due) as Days_Elapse -- DD: Days
FROM   CarRental
WHERE Car_ID =? 

Ссылка: DATEDIFF (Transact-SQL) - SQL Server | Microsoft Docs[^]


Kurt Jimenez

Это сработало! Спасибо Вам за ваши усилия!

Рейтинг:
11

Patrice T

Цитата:
Что плохого в этом утверждении?

Именно то, что было сказано в сообщении: функция datediff требует 3 аргумента(ов).
и ваш код предоставляет только 2 аргумента.
Вам нужно прочитать документацию, чтобы увидеть, как работает datediff.
Функция SQL Server DATEDIFF() [^]