SQLは、最近の週、1ヶ月、3ヶ月のデータを検索します.

2341 ワード

最近、Webプロジェクトを作成しています.プロジェクトのニーズでは、運営者がデータ分析を行うために、受注表の最近の週、最近の月、最近の3ヶ月の受注情報を照会する必要があります.プロジェクトで使用するデータベースはMySQLを使用しているので、以下のコマンドはすべてMySQLベースです.
まずはMySQLのDATE_を見てみましょうADD関数:
DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
These functions perform date arithmetic. The date argument specifies the starting date or datetime value. expris an expression specifying the interval value to be added or subtracted from the starting date. expr is a string; it may start with a “-” for negative intervals. unit is a keyword indicating the units in which the expression should be interpreted.
The INTERVAL keyword and the unit specifier are not case sensitive.
The following table shows the expected form of the expr argument for each unit value.
unit Value Expected expr Format MICROSECOND MICROSECONDS SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS WEEK WEEKS MONTH MONTHS QUARTER QUARTERS YEAR YEARS SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’ MINUTE_MICROSECOND ‘MINUTES:SECONDS.MICROSECONDS’ MINUTE_SECOND ‘MINUTES:SECONDS’ HOUR_MICROSECOND ‘HOURS:MINUTES:SECONDS.MICROSECONDS’ HOUR_SECOND ‘HOURS:MINUTES:SECONDS’ HOUR_MINUTE ‘HOURS:MINUTES’ DAY_MICROSECOND ‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS’ DAY_SECOND ‘DAYS HOURS:MINUTES:SECONDS’ DAY_MINUTE ‘DAYS HOURS:MINUTES’ DAY_HOUR ‘DAYS HOURS’ YEAR_MONTH ‘YEARS-MONTHS’
以上はMySQLの公式サイトから抜粋したドキュメントです.リンク:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
使用法は次のとおりです.
現在の時間:
mysql> select now(); +———————+ | now() | +———————+ | 2014-07-03 21:16:22 | +———————+ 1 row in set (0.00 sec)
翌月:mysql>select date_add(now(),interval 1 month); +———————————-+ | date_add(now(),interval 1 month) | +———————————-+ | 2014-08-03 21:16:28 | +———————————-+ 1 row in set (0.00 sec)
先月:mysql>select date_add(now(),interval -1 month); +———————————–+ | date_add(now(),interval -1 month) | +———————————–+ | 2014-06-03 21:17:02 | +———————————–+ 1 row in set (0.00 sec)
mysql>
プロジェクトのorderテーブルのcreateTimeはunix timestampなので、まず日付フォーマットを変換する必要があります.ここではFROM_UNIXTIME(timestamp).
最終的なSQL文は次のとおりです.
select from_unixtime(createTime) as datetime from wm_order having datetime between date_add(now(),interval -1 month) and now();