2017-12-02 773 views
2

我正在学习SQL(使用MariaDB 10.2),我正在使用我在网上找到的一个庞大的示例数据库。它有一个'员工'表,这个人有一个'date_date'类型的'birth_date'列。例如,我想选择所有年龄在50岁以上的员工,或者在特定日期选择25岁以上的员工。有没有办法做这样的事情?SQL按今天的日期选择

回答

4

可以增加或减少interval s到date S:

SELECT * 
FROM employee 
WHERE birth_date <= NOW() - INTERVAL 50 YEAR 
+1

这是最好的方法。这是准确的,查询可以使用索引。 –

0

使用此

SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW()) 

这是MySQL数据库

+1

难道这不会选择今天出生的所有员工(年龄为0岁)吗? –

+0

好的@Roland我会试试。 –

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 
+0

对于我来说,这个结果中的错误'DATEDIFF'只在mysql/mariadb中有2个参数:https://mariadb.com/kb/en/library/datediff/。我猜你的查询在T-SQL中运行良好:) –

+0

是的;我很抱歉,我没有指定哪个SQL。我的意思是针对ms sqlserver的t-sql。对于mysql,你不会使用第一个参数(“年”),并且如果我理解正确,你总能在几天内得到答案。 – KCCole

0

可以使用间隔功能,您可以添加或减去日期:

SELECT * FROM employee WHERE birth_date <= (NOW() - INTERVAL 50 YEAR); 
  • NOW() - --->当前日期
  • -INTERVAL 50年----->将该日期减去50年