Как я могу запросить поле даты и времени только с датой - PullRequest
2 голосов
/ 27 марта 2019

Я запрашиваю базу данных SQL Server из VB.Net с помощью приведенной ниже команды, но не могу заставить ее выбрать строки с определенной датой, поскольку столбец содержит значения даты и времени.Он все время говорит

Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.

Я пробовал CAST & CONVERTи различные функции даты, но я не могу заставить его работать

CmdText As String = "SELECT * FROM Races m WHERE (RaceStartTime BETWEEN '27/03/2019 00:00:01' AND '27/03/2019 23:59:59') AND RaceTime = (SELECT MIN(RaceTime) FROM Races WHERE DriverName = m.DriverName) ORDER BY RaceTime;"

Я ожидаю строки на данную дату, но я не получаю строк вообще.Одна строка данных имеет дату 27/03/2019, поэтому она должна быть возвращена

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Вы получили какую-либо ошибку? также попробовать без Reactime?

CmdText As String = "SELECT * FROM Races m WHERE (RaceStartTime BETWEEN '27/Mar/2019 00:00:01' AND '27/Mar/2019 23:59:59') AND RaceTime = (SELECT MIN(RaceTime) FROM Races WHERE DriverName = m.DriverName) ORDER BY RaceTime;"

Можете ли вы сначала попробовать этот запрос из Sql Server Management Studio? Я думаю, что проблема может быть для RaceTime ??

0 голосов
/ 27 марта 2019

Единственная причина, по которой вы получите эту ошибку, заключается в том, что ваш сервер настроен на 27 как месяц, а 03 - как дату, а не наоборот.

Вы должны использовать строки, не зависящие от локали, такие как 'YYYYMMDD'

Касательно проблемы, вызывающей ошибку, другой, менее подверженный ошибкам способ получения строк за определенный день выглядит так:

WHERE CONVERT(date, RaceStartTime) = '20190327'
...