SQL 从今天开始按日期选择

Posted

技术标签:

【中文标题】SQL 从今天开始按日期选择【英文标题】:SQL select by date from today 【发布时间】:2018-05-16 14:44:04 【问题描述】:

我正在研究 SQL(使用 MariaDB 10.2)并且我正在使用我在网上找到的一个巨大的示例数据库。它有一个“员工”表,这个表有一个“日期”类型的“出生日期”列。例如,我想选择所有 50 岁以上的员工,或者可能在特定日期将 25 岁的员工。有没有办法做这样的事情?

【问题讨论】:

【参考方案1】:

您可以在dates 中加上或减去intervals:

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

【讨论】:

对我来说这会导致错误DATEDIFFmysql/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 年

限制引导日期选择器选择最多 2 年的日期 - 不工作

Hibernate HQL - 从今天开始获取实体的下一个日期

在jQuery datepicker中禁用从今天开始的上一个日期