-2

student次の列を持つテーブルがあります。

no - integer
name - string 
startdate - date 
enddate - date. 

日付形式はMM/DD/YYYY.

入力として日付を指定します。inputdateここで、開始日と終了日の間にあるクエリが必要です。

例として04/14/2012、クエリは図のように最初のレコードを返す必要があります。

(~の間に入力日付(04/14/2012)がある04/10/2012ため04/20/2012

私を助けてください。

ここに画像の説明を入力

4

4 に答える 4

3

あなたが抱えている問題は、実際にはそうではないのに、sqlite には date/datetime 型があるという仮定によって引き起こされます。

次のhttp://www.sqlite.org/datatype3.htmlを読んで、sqlite 型をよりよく理解することをお勧めします。

形式の日付はMM/DD/YYYYsqlite によって TEXT として処理されるため、これらの日付は文字列として比較されます。たとえば、直接比較すると、sqlite02/01/2012よりも大きいと見なされます。01/02/2012

これらの日付を文字列比較できる形式に変換する必要があります。以下に例を示します。

sqlite> create table foo (d TEXT);
sqlite> insert into foo values ('02/01/2012');
sqlite> select substr(d, 7, 4) || substr(d, 1, 2) || substr(d, 4, 2) from foo;
20120201
于 2012-04-12T14:29:08.347 に答える
2

これまでに試したことを投稿する必要があります。

between使用できる句があるはずです。

select * from table
where inputdate between startdate and enddate
于 2012-04-12T12:25:17.083 に答える
0

sqlite> select *from tbl_node where mydate between '2014-02-02' and '2014-02-06';

出力を表示します:-

1|1|123|456|12eb-ab|1|1|254|123|19|2014-02-03 16:00:44
2|1|123|456|12eb-ab|1|1|254|123|19|2014-02-03 16:01:03
3|1|123|456|12eb-ab|1|1|254|123|19|2014-02-03 16:00:57
4|1|123|456|12eb-ab|1|1|254|123|19|2014-02-03 16:00:34

ここで、mydate は tbl_node の列名です。now を使用して from current time を使用することもできます。

sqlite> select *from tbl_node where mydate between '2014-02-02' and 'now';

于 2014-02-06T07:16:08.717 に答える