SQL 从今天开始按日期选择
Posted
技术标签:
【中文标题】SQL 从今天开始按日期选择【英文标题】:SQL select by date from today 【发布时间】:2018-05-16 14:44:04 【问题描述】:我正在研究 SQL(使用 MariaDB 10.2)并且我正在使用我在网上找到的一个巨大的示例数据库。它有一个“员工”表,这个表有一个“日期”类型的“出生日期”列。例如,我想选择所有 50 岁以上的员工,或者可能在特定日期将 25 岁的员工。有没有办法做这样的事情?
【问题讨论】:
【参考方案1】:您可以在date
s 中加上或减去interval
s:
SELECT *
FROM employee
WHERE birth_date <= NOW() - INTERVAL 50 YEAR
【讨论】:
这是最好的方法。精确到当天,查询可以使用索引。【参考方案2】:假设 t-sql,那么对于今天 50 岁以上的人,使用:
select * from employees where datediff(year, birth_date, now()) > 50
对于那些在某个日期将年满 25 岁的人使用:
select * from employees where datediff(year, birthdate, certain_date) = 25
【讨论】:
对我来说这会导致错误DATEDIFF
在 mysql/mariadb 中只有 2 个参数:mariadb.com/kb/en/library/datediff。我猜你的查询在 T-SQL 中运行良好 :)
是的;很抱歉,我没有指定哪个 SQL。我的意思是 t-sql 用于 ms sqlserver。对于 mysql,您不会使用第一个参数(“年份”),如果我理解正确,您总是会在几天内得到答案。【参考方案3】:
使用这个
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW())
这是用于 MySql 数据库的
【讨论】:
这不会选择今天出生(年龄为 0)的所有员工吗? 好的@Roland 我会试试的。【参考方案4】:您可以使用可以添加或减去日期的 INTERVAL 函数:
SELECT * FROM employee WHERE birth_date <= (NOW() - INTERVAL 50 YEAR);
NOW() -----> 现在日期
-INTERVAL 50 YEAR -----> 将该日期减去 50 年
【讨论】:
以上是关于SQL 从今天开始按日期选择的主要内容,如果未能解决你的问题,请参考以下文章
Tsql -> 从今天开始过滤 6 个月的数据,表中的日期字段为 YYYYMM
带有日期列表的 Pyspark DF(使用 PANDAS)从今天开始 BACK 1 年