Sql server 将日期与Sql server中的当前日期进行比较
我有一个表,其中列出了一些带有日期的事件。我正在尝试编写一个只返回即将发生的事件的存储过程 我在存储过程中编写了以下查询:Sql server 将日期与Sql server中的当前日期进行比较,sql-server,date,Sql Server,Date,我有一个表,其中列出了一些带有日期的事件。我正在尝试编写一个只返回即将发生的事件的存储过程 我在存储过程中编写了以下查询: SELECT * FROM Events WHERE tDate >= (select CAST(GETDATE() as DATE)) 但这并没有返回正确的结果。这也会显示日期小于当前日期的结果。如何编写将返回日期等于或大于今天日期的所有事件的查询 编辑:表中输入的日期格式为yyyy/dd/mm,getdate()返回的日期格式为yy
SELECT *
FROM Events
WHERE tDate >= (select CAST(GETDATE() as DATE))
但这并没有返回正确的结果。这也会显示日期小于当前日期的结果。如何编写将返回日期等于或大于今天日期的所有事件的查询
编辑:表中输入的日期格式为yyyy/dd/mm,getdate()返回的日期格式为yyyy/mm/dd。我认为这是问题的原因。已输入到表中的日期已使用jquery日期选择器获取。这个问题有什么解决办法吗?不知道为什么您有额外的选择
SELECT *
FROM Events
WHERE tDate >= CAST(GETDATE() as DATE)
您的
日期
数据在Sql Server中存储不正确。当应用程序传递字符串'2015-09-04'
并保存该日期列时,它将保存为2015年9月4日,而不是2015年4月9日。因此,查询返回大于GETDATE()
的行
示例
DECLARE @D VARCHAR(10) = '2015-09-04'
SELECT CONVERT(VARCHAR(20),CONVERT(DATE,@D),109)
当从应用程序在表中保存日期时,您需要修复数据,然后使用样式为的CONVERT
,如下所示<代码>转换(日期'20150409',112)
有关更多信息,请参阅以下线程:
“…大于今天的日期”-使用“大于”(>)而不是“大于或等于”(>=)简单地
WHERE tDate>GETDATE()
)有什么问题吗?这个问题目前还不清楚,但我想是时间部分吧?你能提供这个查询结果和例外情况的例子吗output@ughai此查询返回日期为2015-09-04、2015-10-04的结果。但结果的日期应等于或大于2015-14-04
DECLARE @D VARCHAR(10) = '20150409'
SELECT CONVERT(VARCHAR(20),CONVERT(DATE,@D,112),109)