sql查询以将现有表中的日期与所选日期进行比较?
我需要将现有表中的日期与所选日期进行比较,以确保相等。我正在开发一个asp.net应用程序,我打算在已经存在的表中插入一条新记录,我正在asp.net表单中使用ajax calender extender,我需要将所选日期与已经存在的日期进行比较,以便在添加新记录之前在gridview中显示包含相同日期的记录 我不完全明白问题出在哪里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)
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格式?谢谢你的回复。我想你是对的我只是想