Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server日期时间查询问题_C#_Sql Server_Datetime_Sql Server Ce - Fatal编程技术网

C# SQL Server日期时间查询问题

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

我正在使用SQLServerCompact3.52008,并试图返回日期时间字段为今天或以前的行。这是我正在尝试的代码,但它引发了一个异常。在Where子句中

我是SQL新手,所以我在这方面遇到了问题。有什么想法吗?如果您需要更多数据,请告诉我

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日期都应该在午夜时间,但我肯定会查看我的数据,确保它的行为符合预期。