1

私はMySql5.5を使用しています、

半径アカウンティングテーブルで次のクエリを使用しています。

  • query1:

    SELECT * FROM database.table WHERE framedipaddress = '192.168.1.1' and '2011-09-09' BETWEEN acctstarttime AND acctstoptime;

およびフィールドはタイプでacctstarttimeあり、としてフォーマットされます。acctstoptimedatetimeYEAR-MT-DY HR:MN:SC

query2を使用すると、query1の結果が常に正確であるとは限らず、query1が何も返さないか間違った行を返すことがあります。

  • query2:

    SELECT * FROM database.table WHERE framedipaddress = '192.168.1.1' ORDER BY acctstarttime DESC LIMIT 0、400;

2つのフィールドをクエリする別の方法はありますdatetimeか、それともデータベースの健全性/データが問題ですか?

私のロジックのエラーに関するガイダンスは大歓迎です。

これが私が今持っている質問に対する質問です。

4

1 に答える 1

1

'2011-09-09' = '2011-09-09 00:00:00'したがって、この時間より前にacctstarttimeがあり、この時間より後にacctstoptimeがあるアカウントのみをクエリしています。

2011年9月9日に開始されたアカウントをお探しの場合。その後、あなたはすることができます

...
WHERE
acctstarttime >= '2011-09-09' AND acctstarttime < '2011-09-10'

2011-09-09に開始および終了したアカウントを探している場合。次に、次のことを行います。

...
WHERE
acctstarttime >= '2011-09-09' AND acctstarttime < '2011-09-10' AND
acctstoptime >= '2011-09-09' AND acctstoptime < '2011-09-10' AND

参考までに、使用する場合BETWEENは境界が含まれるため、が含まれます2011-09-10 00:00:00

于 2012-02-07T15:51:04.377 に答える