Как сравнить тип datetime в SQL Server - PullRequest
3 голосов
/ 23 июня 2010

Итак, в моей БД на SQL Server есть столбец с указанием даты и времени. Я хочу сделать это простым оператором select:

SELECT *
FROM Res
Where dateSubmit='6/17/2010 5:01:26 PM'

dateSubmit - это тип данных datetime, и в моей базе данных есть строка, в которой dateSubmit - 17.06.2010 17:01:26

Однако, когда я выполняю этот оператор, он возвращает ноль.

Ответы [ 5 ]

7 голосов
/ 24 июня 2010

Я думаю, что SQL Server сохраняет больше цифр точности, чем отображает.

Попробуйте это:

SELECT * 
FROM Res 
Where dateSubmit between '6/17/2010 5:01:26 PM' and '6/17/2010 5:01:27 PM'
1 голос
/ 24 июня 2010

Проблема в части час: минута: секунда, и вы никогда не получите точную секунду, поэтому вы получите ноль. Попробуйте использовать

SELECT * 
FROM Res
Where DATEDIFF ( day , dateSubmit , '6/17/2010 5:01:26 PM' )=0

Для получения дополнительной информации перейдите по этой ссылке

«День» может быть заменен на что-либо еще, так как «DatePart» см. Ссылку например,

SELECT * 
FROM Res
Where DATEDIFF ( minute, dateSubmit , '6/17/2010 5:01:26 PM' )=0
0 голосов
/ 24 июня 2010

Когда я пытаюсь запустить что-то подобное в моей версии SQL Server (2005), оно работает как положено.

Попробуйте вынуть PM и использовать вместо этого 24-часовой формат:

SELECT * 
FROM Res 
Where dateSubmit='6/17/2010 17:01:26' 
0 голосов
/ 24 июня 2010

Похоже, это должно работать. Вы можете попробовать SELECT * FROM Res Where cast (dateSubmit as nvarchar) = '6/17/2010 5:01:26 PM'

0 голосов
/ 23 июня 2010

Уберите время, если это не имеет значения

Dateadd (d, datediff (d, 0, getdate ()), 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...