2017-12-02 315 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年