Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
sql查询以将现有表中的日期与所选日期进行比较?_Sql_Sql Server 2005_Date Comparison - Fatal编程技术网

sql查询以将现有表中的日期与所选日期进行比较?

sql查询以将现有表中的日期与所选日期进行比较?,sql,sql-server-2005,date-comparison,Sql,Sql Server 2005,Date Comparison,我需要将现有表中的日期与所选日期进行比较,以确保相等。我正在开发一个asp.net应用程序,我打算在已经存在的表中插入一条新记录,我正在asp.net表单中使用ajax calender extender,我需要将所选日期与已经存在的日期进行比较,以便在添加新记录之前在gridview中显示包含相同日期的记录 我不完全明白问题出在哪里 DECLARE @YourDate DATETIME SET @YourDate = '2010-11-09' SELECT (list of columns)

我需要将现有表中的日期与所选日期进行比较,以确保相等。我正在开发一个asp.net应用程序,我打算在已经存在的表中插入一条新记录,我正在asp.net表单中使用ajax calender extender,我需要将所选日期与已经存在的日期进行比较,以便在添加新记录之前在gridview中显示包含相同日期的记录

我不完全明白问题出在哪里

DECLARE @YourDate DATETIME
SET @YourDate = '2010-11-09'

SELECT (list of columns)
FROM dbo.YourTable
WHERE SomeDateColumn = @YourDate
您需要注意的主要问题是:在2005版之前的SQL Server版本中,您只有
DATETIME
数据类型,顾名思义,该数据类型同时存储日期和时间-因此精确匹配将匹配到毫秒。。。。通常这不是你真正想要的


你能更详细地解释一下你想要达到的目标和你遇到的问题吗???

我不完全明白问题在哪里

DECLARE @YourDate DATETIME
SET @YourDate = '2010-11-09'

SELECT (list of columns)
FROM dbo.YourTable
WHERE SomeDateColumn = @YourDate
您需要注意的主要问题是:在2005版之前的SQL Server版本中,您只有
DATETIME
数据类型,顾名思义,该数据类型同时存储日期和时间-因此精确匹配将匹配到毫秒。。。。通常这不是你真正想要的


你能更详细地解释一下你想要达到的目标和你遇到的麻烦是什么吗???

如果你只对日期元素的相等感兴趣,忽略列值中的时间,那么使用如下子句:

DECLARE @DateParam DATETIME
SET @DateParam = '20101109'

SELECT SomeField
FROM SomeTable
WHERE DateField >= @DateParam AND DateField < DATEADD(dd, 1, @DateParam)
DECLARE@DateParam DATETIME
SET@DateParam='20101109'
选择某个字段
从某处
其中DateField>=@DateParam和DateField

此示例将查找DateField列在所述日期的任意点上具有日期(&time)的所有记录。

如果您只对日期元素的相等感兴趣,而忽略列值中存在的时间,则使用如下子句:

DECLARE @DateParam DATETIME
SET @DateParam = '20101109'

SELECT SomeField
FROM SomeTable
WHERE DateField >= @DateParam AND DateField < DATEADD(dd, 1, @DateParam)
DECLARE@DateParam DATETIME
SET@DateParam='20101109'
选择某个字段
从某处
其中DateField>=@DateParam和DateField

本例将查找DateField列在所述日期的任何时间点上有日期(和时间)的所有记录。

我完全赞同marc_s和AdaTheDev的解决方案(以及他们和我对您需要什么的理解-您需要在问题中定义您选择的日期)

但是,假设您选择的输入是格式为yyyy-mm-dd(marc_s)或yyyymmdd(adathedev)的日期(如其他答案中所示),则以下替代方法也应适用

DECLARE @Date DATETIME
SET @Date = '2010/10/10'

SELECT * 
FROM SomeTable
WHERE CONVERT(VARCHAR(10), DateField, 126) = @Date
当您声明datetime并仅使用日期进行设置时-时间设置为12:00:00.000。因此,使用相等运算符,它将查找与时间的精确匹配(如果使用诸如GETDATE()之类的内容插入表中,这是极不可能的)

我的解决方案只是在查询时减少数据库中字段的时间。但我还是会选择其他的解决方案。这只是一种选择


+我完全赞同marc_s和AdaTheDev的解决方案(以及他们和我对你需要什么的理解-你需要在问题中定义你选择的日期)

但是,假设您选择的输入是格式为yyyy-mm-dd(marc_s)或yyyymmdd(adathedev)的日期(如其他答案中所示),则以下替代方法也应适用

DECLARE @Date DATETIME
SET @Date = '2010/10/10'

SELECT * 
FROM SomeTable
WHERE CONVERT(VARCHAR(10), DateField, 126) = @Date
当您声明datetime并仅使用日期进行设置时-时间设置为12:00:00.000。因此,使用相等运算符,它将查找与时间的精确匹配(如果使用诸如GETDATE()之类的内容插入表中,这是极不可能的)

我的解决方案只是在查询时减少数据库中字段的时间。但我还是会选择其他的解决方案。这只是一种选择

+1给其他人。

查看网站


检查站点

您对所选日期和相等日期(同一天,同一秒,…)的含义是什么?日期是我的输入数据,我正在将此日期与表中的日期进行比较。我只是比较日期,我想排除时间。对于所选日期和相等(同一天,同一秒,…)是什么意思?日期是我的输入数据,我将此日期与表中的日期进行比较。我只是比较日期,我想排除时间。非常感谢你的回复。我正在开发一个asp.net应用程序,我打算在已经存在的表中插入一条新记录,我正在asp.net表单中使用ajax calender extender,我需要将所选日期与已经存在的日期进行比较,以便在添加新记录之前在gridview中显示包含相同日期的记录。希望你能理解这个场景。是的,我只想比较不包括时间的日期。非常感谢你的回复。我正在开发一个asp.net应用程序,我打算在已经存在的表中插入一条新记录,我正在asp.net表单中使用ajax calender extender,我需要将所选日期与已经存在的日期进行比较,以便在添加新记录之前在gridview中显示包含相同日期的记录。希望你能理解这个场景。是的,我只想比较日期,不包括时间。非常感谢你的回复。我想这正是我想要的。我只想比较日期,不包括时间。谢谢分享。我很高兴我在这里学到了新东西……:):…我如何使上述查询适用于MM/DD/YYYY格式?非常感谢您的回复。我想这正是我想要的。我只想比较日期,不包括时间。谢谢分享。我很高兴我在这里学到了新东西……:):…我如何使上述查询适用于MM/DD/YYYY格式?谢谢你的回复。我想你是对的我只是想