この記事では、時間フィールドの従来のクエリ方法と UNIX タイムスタンプクエリのスキルを含む、主に MySqlクエリ期間のメソッドを紹介します。それを必要とする友人は、この記事を参照することができます
。この例では、MySql で期間をクエリする方法を説明します。皆さんの参考に共有してください。具体的な方法は次のとおりです:
MySql で期間をクエリする方法を誰もが知っているわけではないかもしれません。参考までに、MySql で期間をクエリする 2 つの方法を示します。
MySql の時間フィールドには、日付、時刻、日付時刻、タイムスタンプなどが含まれます。データを保存するときは、datetime 型を使用して時刻全体を 1 つのフィールドに保存することもあります。つまり、日付と時刻を分離することもあります。 1 つのフィールドに日付が格納されます。実際のアプリケーションでは、保存方法に関係なく、「期間」タイプを含むクエリが存在する可能性があります。たとえば、アクセス レコード データベースでは 1 日あたりの訪問数をカウントする必要があり、毎日が期間になります。以下では、MySql で期間をクエリするための 2 つの一般的な方法を紹介します。他のデータベースも同様に実装できます。
方法 1: 従来の方法、つまり、開始時刻と終了時刻を指定し、「between」または「<」、「>」を使用して条件を確立します (2010 年 3 月 1 日から 3 月 2 日までのクエリなど)。 , 2010 1 日あたりのデータ項目数については、
を使用できます。 コードは次のとおりです:
select count(*) from sometable where datetimecolumn>='2010-03-01 00:00:00' and datetimecolumn<'2010-03-02 00:00:00'
ただし、時間が integer 型のデータではないため、この方法は比較の効率が低くなります。データが大きい場合は、時間を整数の UNIX タイムスタンプに変換できます。これは方法 2 です。
方法 2: UNIX タイムスタンプ。各時刻は、一意の UNIX タイムスタンプに対応し、「1970-01-01 00:00:00」からカウントを開始し、1 秒ごとに 1 ずつ増加します。 MySql には、従来の時刻と UNIX 時刻を交換するための組み込み関数 があります。これは、
UNIX_TIMESTAMP(datetime)FROM_UNIXTIME(unixtime)
SELECT UNIX_TIMESTAMP('2010-03-01 00:00:00')
SELECT FROM_UNIXTIME(1267372800)
インデックスを作成することで効率が大幅に向上します。クエリを実行するときは、比較する前に開始時刻と終了時刻をそれぞれ UNIX 時間に変換する必要があります。例:
select count(*) from sometable where datetimecolumn>=UNIX_TIMESTAMP('2010-03-01 00:00:00') and datetimecolumn<UNIX_TIMESTAMP('2010-03-02 00:00:00')
以上がMySqlクエリ期間メソッドのサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。