如何仅查询日期的日期时间字段

时间:2019-03-27 13:58:53

标签: sql-server tsql date datetime sql-server-express

我正在使用以下命令从VB.Net查询SQL Server数据库,但由于列包含datetime值,因此无法从特定日期选择行。一直在说

  

将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 :(得分:0)

出现此错误的唯一原因是,如果服务器设置为将27视为月份,将03视为日期,而不是相反。

您应该使用locale-neutral strings like 'YYYYMMDD'

针对导致错误的问题,这是另一种不太容易出错的方式来获取特定日期的行,就像这样:

WHERE CONVERT(date, RaceStartTime) = '20190327'

答案 1 :(得分:0)

您收到任何错误吗?还可以尝试没有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上?