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

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

【问题讨论】:

    标签: mysql sql date select mariadb


    【解决方案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
    

    【讨论】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2018-09-27
      • 2023-04-05
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多