我是sql
查询的新手,任何人都可以帮我编写以下条件的查询
我在表“members”中有一个名为“dob”的列。 注意:dob数据类型是文本。
而值如:
dob
===
7-November-1980
9-November-1981
10-November-1982
5-May-1990
现在要从本周开始(即)从2012年7月11日到2012年11月13日,我希望得到结果作为前3条记录。为此,我写了这样的查询
select * from members where dob in('7-November','8-November','9-November','10-November','11-November','12-November','13-November')
但它永远不会返回任何结果。有人请帮助我,我怎么能得到它。非常感谢你。
答案 0 :(得分:0)
您的日期未存储在SQLite's supported date formats之一中,因此此查询会变得相当复杂:
SELECT *
FROM members
WHERE dob LIKE '7-November%' OR
dob LIKE '8-November%' OR
dob LIKE '9-November%' OR
dob LIKE '10-November%' OR
dob LIKE '11-November%' OR
dob LIKE '12-November%' OR
dob LIKE '13-November%'
如果您使用固定字段宽度的YYYY-MM-DD
格式存储日期,则可以使用更简单的查询:
SELECT *
FROM members
WHERE SUBSTR(dob, 6, 5) BETWEEN '11-07' AND '11-13'
答案 1 :(得分:-1)
您正在进行精确的文本匹配,即1980年11月7日不等于7月11日,这就是您的查询未返回任何结果的原因。尝试使用mysql日期函数将文本转换为日期时间,从中提取日期 - 月份,然后使用范围查询来获取结果。 检查http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html