日期自动where子句- SQL

  • 本文关键字:SQL 子句 where 日期 sql
  • 更新时间 :
  • 英文 :


我的数据库中有我可以这样过滤的日期:

select *
where    
a.y=2021 and a.m=2 and a.d=7

但是,如果我明天运行这个查询,我就必须去那里手动更改。

是否有一种方法可以自动做到这一点,如果我明天运行查询,我会得到d=8和d=9等后的一天?

我尝试使用get date,但我得到以下错误:

SQL Error [6]: Query failed (#20210207_153809_06316_2g4as): line 2:7: Function 'getdate' not registered

我也不知道这是否是正确的解决方案。有人知道怎么解决吗?

您可以使用NOW获取当前日期,并使用YEAR,MONTH,DAY获取部分日期

SELECT * 
FROM [TABLE]
WHERE a.y=YEAR(NOW()) and a.m=MONTH(NOW()) and a.d=DAY(NOW())

最好的解决方案是在数据中使用date列。然后你可以使用:

where datecol = current_date

或者您的特定数据库使用的当前日期。

如果没有这个,你必须把当前日期分成几个部分。在标准SQL中,这看起来像:

where y = extract(year from current_date) and
m = extract(month from current_date) and
d = extract(day from current_date)

也就是说,日期函数因数据库而异,因此确切的语法取决于您的数据库。

例如,在SQL Server中这样写是很常见的:

where y = year(getdate()) and
m = month(getdate()) and
d = day(getdate())

相关内容

  • 没有找到相关文章

最新更新