C# SQL Server日期时间查询问题
我正在使用SQLServerCompact3.52008,并试图返回日期时间字段为今天或以前的行。这是我正在尝试的代码,但它引发了一个异常。在Where子句中 我是SQL新手,所以我在这方面遇到了问题。有什么想法吗?如果您需要更多数据,请告诉我C# SQL Server日期时间查询问题,c#,sql-server,datetime,sql-server-ce,C#,Sql Server,Datetime,Sql Server Ce,我正在使用SQLServerCompact3.52008,并试图返回日期时间字段为今天或以前的行。这是我正在尝试的代码,但它引发了一个异常。在Where子句中 我是SQL新手,所以我在这方面遇到了问题。有什么想法吗?如果您需要更多数据,请告诉我 string selectStatement = "SELECT * FROM EnglishSpanish ORDER BY AvgScore DESC " + "WHERE NextShow <= @Today"; SqlCeComm
string selectStatement =
"SELECT * FROM EnglishSpanish ORDER BY AvgScore DESC " +
"WHERE NextShow <= @Today";
SqlCeCommand selectCommand = new SqlCeCommand(selectStatement, connection);
selectCommand.Parameters.AddWithValue("@Today", DateTime.Today);
正确的Sql语法应该是
SELECT * FROM EnglishSpanish
WHERE NextShow <= @Today
ORDER BY AvgScor DESC
您的WHERE和ORDER BY子句被颠倒
还有。不要选择*。即使选择了所有列,也要命名列。尝试更改查询,使其结构如下:
SELECT * FROM EnglishSpanish WHERE NextShow <= @Today ORDER BY AvgScore DESC
我认为WHERE子句必须在ORDER BY子句之前,ORDER BY子句必须在WHERE子句之后。SQL语句应为
SELECT * FROM EnglishSpanish
WHERE NextShow < @Today
ORDER BY AvgScore DESC
另外请注意,我使用的是您不需要为此查询使用参数,除非您希望支持将来可能发生的更改-您可以使用GETDATE返回当前日期时间:
SELECT *
FROM EnglishSpanish
WHERE nextshow <= GETDATE()
ORDER BY AvgScore DESC
问题是WHERE子句位于错误的位置-它位于FROM之后,GROUP BY之前,HAVING,ORDER BY之后。您收到的特定异常有助于诊断,我认为这两个关于查询顺序的答案,即在下订单之前需要在哪里,都是您问题的正确答案=感谢大家帮助我如此快速地解决这个问题。谢谢。谢谢你提供的额外信息。在我的例子中,我只使用DateTime.Today和它的补充来编写东西,所以我所有的SQL日期都应该在午夜时间,但我肯定会查看我的数据,确保它的行为符合预期。