SQL HELP ... CONVERT (int, CONVERT (datetime, FLOOR (CONVERT (float, getdate ()))) - PullRequest
1 голос
/ 04 ноября 2010

У меня проблема с настройкой этой части моего оператора SQL:

HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                                                  FLOOR(CONVERT(float, GETDATE()))) + 2)

Обычно на странице, которая использует это утверждение, просто перечисляется сумма продаж за сегодня, я хочу переключить GETDATE() на дату, которую я объявляю. Я пробовал все разные форматы, и ни один не работал

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

Используйте метод DATEADD / DATEDIFF для установки временной части на полночь текущей даты - это самый быстрый способ, и приведение к FLOAT может быть ненадежным:

HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))+2

Затем вы можете установить свойдата легко, если вы используете переменную (@var в этом примере, внутри хранимой процедуры или функции):

DECLARE @var DATETIME

SELECT ...
HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, @var), 0))+2

Это предполагает, что @var является типом данных DATETIME.В противном случае вам нужно будет использовать формат даты, который SQL Server будет неявно преобразовывать в DATETIME, или использовать CAST / CONVERT для явного преобразования значения.

1 голос
/ 04 ноября 2010

Как насчет

declare @myDate as datetime
set @myDate = '11/2/2010'

. . .

HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                                                  FLOOR(CONVERT(float, @myDate ))) + 2)

Это должно сделать это, и оно должно автоматически выполнить преобразование типа для вашей строки даты, используемой в операторе set, или вы можете просто передать параметр datetime, если этохранимая процедура.

1 голос
/ 04 ноября 2010

если вы хотите, чтобы вы указали свою собственную дату, вы можете сделать это вместо getdate (), которая выдает текущую системную метку времени.

Cast('2010-11-04 13:28:00.000' as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...