我正在使用以下命令从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,因此应将其返回
答案 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上?