簡體   English   中英

sql查詢大於DATE(年)A但小於DATE(年)B

[英]sql query greater than DATE (year) A but less than DATE (year) B

我有一個像這樣的項目清單:

Field: Name & Field: DOB
- David - 1962
- Robert - 1955
- Tracy - 1980
- Bono - 1964
- Betty - 1968

我需要一個簡單的SQL查詢,該查詢將返回所有出生年份在1960年代(1960-1969)的名字。 遵循此邏輯的一些東西:

$sql = "SELECT * FROM employees WHERE DOB => '1960' AND DOB =< '1969' AND ORDER BY name";

僅供參考:當前雇員數據庫中的DOB字段是VARCHAR字段,具有4個字符的名稱。

有人可以在這樣的查詢中為我指出正確的語法嗎?

應該將日期/時間信息存儲為varchar ,但是由於可以通過一種方法來篩選1960年代生日,因此只需檢查DOB字段的前三個字符即可:

SELECT *
FROM employees
WHERE SUBSTRING(DOB, 1, 3) = '196'
ORDER BY name

您還可以使用原始方法,並使用以下WHERE子句:

WHERE DOB >= '1960' AND DOB <= '1969'

但是,我不喜歡將字符串視為數字,因為如果字符串應該更改長度,則會發生奇怪的事情。 我建議您使用datetime來存儲您的DOB信息。

將查詢從以下位置更改:

"SELECT * FROM employees WHERE DOB => '1960' AND DOB =< '1969' AND ORDER BY name";

"SELECT * FROM employees WHERE DOB >= '1960' AND DOB <= '1969' AND ORDER BY name";
// Its >= or <= not => or =<

然后再試一次

假設您的varchar DOB列僅包含數字:

SELECT * 
FROM employees
WHERE CONVERT(DOB, INTEGER) >= 1960
   AND CONVERT(DOB, INTEGER) <= 1969

你嘗試過這個嗎?

$sql = "SELECT * FROM employees WHERE DOB Like '%YYY%'AND ORDER BY name";

考慮到yyy是196X,因此將產生所有以196開頭的dob。

但這還不夠具體

select * from tt1 where year >='1960' and year <='1969' order by name

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM