Может кто-нибудь сказать мне, почему мои запросы выбора базы данных запрашивают orderid
WHERE [order].dateplaced >= DATEADD(millisecond,-3,ISNULL(@datefrom, @searchscope))
AND [order].dateplaced < DATEADD(millisecond,-3,DATEADD(day,1,ISNULL(@dateto, GETDATE())))
Не пропущен ли заказ за три с половиной минуты до полуночи на @dateto, когда для @datefrom и @dateto установлены одинаковые даты?
Я пытался изменить запрос, чтобы исходный DATEADD добавлял секунду к обоим датам вместо того, чтобы отнимать по 3 миллисекунды у обоих, и он по-прежнему не вытягивал порядок.
Для справки: точная дата и время: 2009-01-20 23: 56: 17.933
Я тупой?
РЕДАКТИРОВАТЬ: Теперь я помню, почему три миллисекунды вступили в игру. Это объясняется тем, что наши учетные записи работают в течение целых месяцев, и если вы хотите получать отчеты за месяц, вы можете установить их, например, с 01 января по 01 февраля, и это будет включать все до полуночи 01 февраля. эксклюзив или включительно?) Однако люди были слишком глупы, чтобы на самом деле установить диапазон дат, поэтому они устанавливали его с 01 января по 31 января и пропускали день (не спрашивайте меня).
Поскольку я знал, что SQL Server работает с разрешением 3 миллисекунды, я первым делом сделал запрос на 31 января до 11: 59: 59.997 31 января, тогда как 01 февраля все еще будет идти с полуночи. Однако, чтобы компенсировать это на дату «от», мне пришлось сбросить три миллисекунды, чтобы ничто не могло проскользнуть сквозь трещины. Я просто предположил, что SQL Server сможет справиться с этим. Вероятно, сейчас в этих отчетах пропущены биты, поэтому мне придется пойти посмотреть их.
Хотя приведенное ниже решение с наибольшим количеством голосов работает для всех практических целей (программное обеспечение для расчета по кредитным картам нашего банка по-прежнему случайным образом переводит транзакции с любой стороны полуночи на «неправильную» сторону в отношении нашей системы), оно по-прежнему не работает ответьте на вопрос, почему транзакция с хорошей трех с половиной минутной отсрочкой не может быть захвачена. Я ценю, что просто потеря времени будет работать большую часть времени, но характер нашего бизнеса означает, что в определенные даты у нас есть фактические периоды времени около двадцати минут, где было бы полезно большее разрешение и точность обработки.
Для любопытных мы продаем билеты на концерты в Великобритании, и в дни, когда у нас есть, например, поступающий в продажу фестиваль Чтения или V, мы сдвигаем пару тысяч билетов в течение двадцати минут после продажи, а остальные день есть нормальное количество продаж для других вещей. Эти двадцатиминутные периоды становятся объектом большого количества отчетов и анализа, так как балансировщик нагрузки не всегда совершенен, и возникают странные сбои записи. Таким образом, возможность нарезать записи на кусочки в течение нескольких секунд была бы полезной. Моя уверенность в программном обеспечении немного поколеблена, поэтому будет полезен фактический ответ.
Однако, в настоящее время, конкретная вещь, которую я делаю, подходит для решения с наибольшим количеством голосов ниже ...