我有一个像这样的项目列表:
Field: Name & Field: DOB
- David - 1962
- Robert - 1955
- Tracy - 1980
- Bono - 1964
- Betty - 1968
我需要一个简单的SQL查询,它将返回其出生年份在20世纪60年代(1960-1969)吃过的所有名字。这个逻辑的一些东西:
$sql = "SELECT * FROM employees WHERE DOB => '1960' AND DOB =< '1969' AND ORDER BY name";
仅供参考:目前员工数据库中的DOB字段是一个VARCHAR字段,其中包含4个字符。
有人能指出我对这种查询的正确语法吗?
答案 0 :(得分:2)
你应该不将日期/时间信息存储为varchar
,但由于你有一种方法可以屏蔽20世纪60年代的生日,只需检查{{{的前三个字符1}} field:
DOB
您还可以使用原始方法,并使用以下SELECT *
FROM employees
WHERE SUBSTRING(DOB, 1, 3) = '196'
ORDER BY name
子句:
WHERE
但是,我不喜欢将字符串视为数字,因为如果字符串应该改变长度,你就会发生奇怪的事情。我建议您使用WHERE DOB >= '1960' AND DOB <= '1969'
来存储datetime
信息。
答案 1 :(得分:0)
更改查询:
"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 =<
再试一次
答案 2 :(得分:0)
假设您的varchar DOB列仅包含数字:
SELECT *
FROM employees
WHERE CONVERT(DOB, INTEGER) >= 1960
AND CONVERT(DOB, INTEGER) <= 1969
答案 3 :(得分:0)
$sql = "SELECT * FROM employees WHERE DOB Like '%YYY%'AND ORDER BY name";
考虑yyy是196X所以所有以196开头的dob都会产生。
但这不够具体
答案 4 :(得分:0)
select * from tt1 where year >='1960' and year <='1969' order by name
希望这会有所帮助。