T-SQL неправильно читает ваши даты.Литералы даты должны быть отформатированы как строковые (т.е. '24/12/2010'
, обратите внимание на одинарные кавычки), тогда как ваши даты представляются в виде целых чисел (то есть 24 делятся на 12, что делится на 2010).
Так в вашемкод, то, что вы на самом деле делаете:
WHERE
guest_reservation.confirm_no = reservation.confirm_no
AND res_checkout_date = 0
Для этого все, что вам нужно сделать, это заключить в кавычки одинаковые даты.
Также помните, что указание только датыПредполагается, что вы действительно имели в виду: 24/12/2010 00:00:00.000
, и если дата оформления заказа на самом деле 24/12/2010 00:01:00
(т.е. одна минута после полуночи), она не будет включена в результат.Чтобы учесть все времена в течение одного дня, сделайте следующее:
WHERE
guest_reservation.confirm_no = reservation.confirm_no
AND res_checkout_date >= '24/12/2010' AND res_checkout_date < '25/12/2010'
В качестве незначительного признака, я бы рекомендовал вам использовать более сжатый формат для ваших дат.форматирование дат в формате dd/mm/yyyy
может привести к путанице и появлению незначительных ошибок в вашем коде, если вы переместите свою базу данных на сервер с другим языком по умолчанию (например, переход с сервера, где даты отформатированы dd/mm/yyyy
, на сервер, где датыотформатированный mm/dd/yyyy
).Чтобы избежать этого, я обычно использую формат даты ANSI SQL, который является yyyy-MM-dd HH:mm:ss
и не зависит от культуры.