sql查询来过滤本周的日期

时间:2012-11-07 05:21:01

标签: sql sqlite android-sqlite

我是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')

但它永远不会返回任何结果。有人请帮助我,我怎么能得到它。非常感谢你。

2 个答案:

答案 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