Функция DATEDIFF отображает вывод ошибок в sqlserver - PullRequest
0 голосов
/ 16 октября 2019

я попробовал код в mysql, он работает хорошо

 select car_id,cust_id,due,DATEDIFF(NOW(),due) as elap from rental where car_id = '1'

дата выпуска 2019-10-16 дата возврата 2019-10-17 должны вычислить результат elap, отображаемый в -1, он работает хорошо.

если я попытался в sqlserver, он выдал неправильный вывод

select cat_id,cust_id,date,due,DATEDIFF(dd,GETDATE(),due) as elap from rental where cat_id = '1'

необходимо вычислить результат elap, отображаемый в 1. неправильный вывод прямо равен -1, я не знаю, в чем ошибкакод sqlserver

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Функция SQL Server DATEDIFF использует формат:

DATEDIFF(datepart, start_date, end_date)

Возвращает разницу между окончанием датой и началом дата, в этом порядке. Итак, в вашем примере, если due дата на один день позже текущей, вы получите разницу в дате + 1.

DATEDIFF MySQL * вычисляет разницу в обратном порядке, а именно:первая дата минус вторая, т. е.

DATEDIFF(date1, date2)

. Возвращает количество дней, прошедших с date2 до date1, т. е. date1 - date2.

.
1 голос
/ 16 октября 2019

Это будет работать правильно.

select cat_id,cust_id,date,due,DATEDIFF(dd,due,GETDATE()) as elap from rental where cat_id = '1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...