sql server datetime - PullRequest
       1

sql server datetime

1 голос
/ 03 мая 2010

у меня следующий запрос:

select * from table where table.DateUpdated >='2010-05-03 08:31:13:000'

все строки в запрашиваемой таблице имеют следующий DateUpdated:

2010-05-03 08:04:50.000

возвращает все строки в таблице, даже если не возвращает ни одной.

Я почти уверен, что это из-за какой-то дурацкой региональной даты / времени.

если я поменяю дату на

select * from table where table.DateUpdated >='2010-03-05 08:31:13:000'

тогда он делает как следует.

Как я могу заставить все использовать одинаковые настройки? это делает мою голову в:)

Это sql, сгенерированный NHIbernate из моей службы WCF, если это имеет значение.

ш: //

Ответы [ 3 ]

4 голосов
/ 03 мая 2010

Используйте этот формат "ггггммдд чч: нн: сс.мммм", который не зависит от локали в SQL Server, все версии

Где-то 5 февраля, а не 3 мая

Почему:

  • «гггг-мм-дд» равно не независимо от локали в SQL Server со столбцами даты и времени
  • эта аномалия исправлена ​​с помощью datetime2 в SQL Server 2008

Ссылки:

* +1032 * Пример: * 1 033 *
SET DATEFORMAT DMY  --UK
SELECT
    MONTH(CAST('2010-03-05 08:31:13:000' AS datetime)), --gives 5
    MONTH(CAST('20100305 08:31:13:000' AS datetime)) --gives 3


SET DATEFORMAT MDY  --default, USA
SELECT
    MONTH(CAST('2010-03-05 08:31:13:000' AS datetime)), --gives 3
    MONTH(CAST('20100305 08:31:13:000' AS datetime)) --gives 3
0 голосов
/ 05 мая 2010

Ответом на это было обновление до 2008 и использование datetime2

что за ПИТА !!!

0 голосов
/ 03 мая 2010

Вы можете попробовать:

select * from table 
where Convert(DateTime, table.DateUpdated,103) >= Convert(DateTime, '2010-05-03 08:31:13:000',103)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...