SQL Server Datetime, где пункт - PullRequest
       1

SQL Server Datetime, где пункт

2 голосов
/ 08 декабря 2010

Извините за ленивый вопрос.Я хочу знать синтаксис SQL Server 2005 для

SELECT * 
  FROM myTable 
 WHERE myDateTimeField > "4am this morning"

Заранее благодарен за помощь.

Ответы [ 3 ]

3 голосов
/ 08 декабря 2010

Использование:

SELECT * 
  FROM myTable 
 WHERE myDateTimeField > DATEADD(hh, 4, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0))

Это:

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

... вернет DATETIME в полночь текущего дня.Таким образом, внешний DATEADD добавляет четыре часа к этой дате в полночь, чтобы дать вам DATETIME сегодня в 4 часа утра.

Ссылка:

1 голос
/ 08 декабря 2010

И просто для того, чтобы быть другим, и, возможно, короче / более читабельным, чем другие предложения:

SELECT * 
  FROM myTable 
 WHERE myDateTimeField > 
       cast(convert(varchar, getdate(), 101) + ' 4AM' as datetime)

Конечно, вы, возможно, на самом деле не захотите жестко кодировать 4AM, но если вы это сделаете, то такэто хорошо и очевидно в выражении ваших намерений.

1 голос
/ 08 декабря 2010

Попробуйте

SELECT * FROM myTable
WHERE myDateTimeField >
      DateAdd(hour, 4, DateAdd(day, DateDiff(day, 0, getdate()), 0))  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...