2

私は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')

ただし、結果が返されることはありません。どうすれば入手できるのか、誰か助けてください。どうもありがとうございました。

4

2 に答える 2

0

日付はSQLiteでサポートされている日付形式の1つに保存されていないため、このクエリはかなり複雑になります。

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 date関数を使用してテキストをdatetimeに変換し、そこからdate-monthを抽出してから、範囲クエリを使用して結果を取得してみてください。http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.htmlを確認してください

于 2012-11-07T05:27:04.817 に答える