2

我是sql查询新手,谁能帮我为以下条件编写查询我在表“成员”中有一个名为“dob”的列。注意: dob 数据类型是文本。 和像这样的价值观:

dob
===
7-November-1980
9-November-1981
10-November-1982
5-May-1990

现在要获得本周的生日(即)从 7-11-2012 到 13-11-2012 ,我想将结果作为前 3 条记录。为此,我写了这样的查询

select * from members where dob in('7-November','8-November','9-November','10-November','11-November','12-November','13-November')

但它从不返回任何结果。任何人都请帮助我,我怎样才能得到它。非常感谢你。

4

2 回答 2

0

您的日期未以SQLite 支持的日期格式之一存储,因此此查询变得相当复杂:

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'
于 2012-11-07T09:17:16.523 回答
-1

您正在进行精确的文本匹配,即 1980 年 11 月 7 日不等于 11 月 7 日,这就是您的查询没有返回任何结果的原因。尝试使用 mysql 日期函数将文本转换为日期时间,从中提取日期-月份,然后使用范围查询来获取结果。检查http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2012-11-07T05:27:04.817 回答