2017-02-07 3 views
1

Так должно ли это случиться? или что-то не так с моим запросом. если я запускаю следующий запросCast (GetDate() as int) появляется после полудня

select getdate() as [Date], CAST(getdate() as date) as [Time], CAST(getdate() as INT) as INT, Cast(CAST(cast(getdate() as int) as DATETime) as Date) as finish

Если я запускаю это в 11:55:00 AM [завершение] возвращает правильную дату.
Если я запустил запрос в 12:10:00, то [finish] возвращает дату tomorrows.
Я попытался найти это и не мог найти ничего такого жаль, если бы его отметили раньше.
Я пытаюсь группировать по дате, но я тоже не хочу группировать, поэтому я делаю конверсии.
Запуск Microsoft SQL Server 2008 R2

+2

не преобразовать его в 'INT' - это бессмысленно. Используйте 'CONVERT (DATE, GETDATE())' – Siyual

+1

Я согласен с тем, что преобразование из datetime в int, а затем назад к настоящему времени утомительно, так уже была установлена ​​база данных. Я думаю, что, как мне кажется, время - 12:00:01, начало дня и 11:59:59 PM - конец дня. – Neal

+0

@ Luaan '12:10:00 AM' находится посреди ночи. '12:10:00 PM' только после полудня. Использование '12: 10: 00' в качестве литерала в литье/преобразование в значение времени даст вам 10 минут за полдень. – iamdave

ответ

1

Я думаю, ваша проблема в том, что (если вы абсолютно должны сделать эти новообращенные, я знаю, что раньше потребуется давно), что вы используете int вместо float и получать округления на преобразованные значения:

select getdate() as [Date] 
    ,CAST(getdate() as date) as [Time] 
    ,CAST(getdate() as INT) as INT 
    ,Cast(CAST(cast(getdate() as int) as DATETime) as Date) as finishInt 
    ,CAST(getdate() as float) as FLOAT 
    ,Cast(CAST(cast(getdate() as float) as DATETime) as Date) as finishFloat 

Выходные:

+-------------------------+------------+-------+------------+------------------+-------------+ 
|   Date   | Time | INT | finishInt |  FLOAT  | finishFloat | 
+-------------------------+------------+-------+------------+------------------+-------------+ 
| 2017-02-07 16:47:59.823 | 2017-02-07 | 42772 | 2017-02-08 | 42771.6999979552 | 2017-02-07 | 
+-------------------------+------------+-------+------------+------------------+-------------+ 
+0

Спасибо, это действительно помогло мне понять, что происходит! – Neal