4

こんにちは、データベースにいくつかの日付を挿入しました。

YYY-MM-DD次のようなクエリを実行するときに、別のテーブルの形式でsqlite3を使用すると

SELECT * 
FROM SDay 
WHERE  strftime('%Y-%m-%d', date)>=strftime('%Y-%m-%d','2013-02-21')
    AND  strftime('%Y-%m-%d', date)<strftime('%Y-%m-%d','2013-09-15')

それはうまく動作します。

一方、YYY-MM別のテーブルでフォーマットを使用すると、

SELECT * 
FROM SMonth 
WHERE  strftime('%Y-%m', date)>=strftime('%Y-%m','2013-02') 
    AND  strftime('%Y-%m', date)<strftime('%Y-%m','2013-09')

動作しません.なぜそれが起こるのですか?どうすれば修正できますか?

ありがとうございました。

4

1 に答える 1

5

2 番目のステートメントでstrftimeは、無効な が指定されていますtimestring。これにより、関数は以下を返しNULLます。

sqlite> .nullvalue <NULL>
sqlite> select strftime('%Y-%m','2013-02');
<NULL>

指定した日付に日を追加するだけで、適切に機能します。

sqlite> select strftime('%Y-%m','2013-02-01');
2013-02

timestring有効な形式のリストは、こちらで確認できます。

于 2012-08-30T09:22:39.647 に答える