1

次の形式で、日付をデータベースに文字列として保存します。

YYYY-MM-DD HH:MM

私のデータベースには行があります(すべての列は文字列です):

       COL1        |     COL2
----------------------------------
'2012-06-21 18:53' |   'item1'
'2012-06-21 18:54' |   'item2'
'2012-06-21 18:55' |   'item3'

今、これらの保存された日付 (文字列) を比較したいのですが、これは非常に奇妙です:

このクエリ

select * 
  from MyTable 
  where col1 > Datetime('2012-06-21 18:53') 

2行を返します(最初を除くすべて)-これは正しいです。

しかし、このクエリ

select * 
      from MyTable 
      where col1 >= Datetime('2012-06-21 18:53')

も 2 行のみを返しますが、>=代わりに使用したように、3 行すべてを返す必要があり>ます。

私は何を間違えたのですか?

4

1 に答える 1

1
sqlite> SELECT datetime('2012-06-21 18:53');
2012-06-21 18:53:00

datetime()は、データベースのフィールドとは異なる形式の文字列を返します。WHEREには文字列だけを使用できます。例:

select * 
      from MyTable 
      where col1 >= '2012-06-21 18:53'
于 2012-06-21T17:09:50.970 に答える