ホームページ  >  記事  >  バックエンド開発  >  PHP日付クエリ関数の実践コード

PHP日付クエリ関数の実践コード

WBOY
WBOYオリジナル
2016-07-25 08:54:101362ブラウズ
  1. date_default_timezone_set('PRC'); //デフォルトのタイムゾーン

  2. echo "Today:",date("Y-m-d",time()),"
    " ;
  3. echo "今日:",date("Y-m-d",strtotime("2008 年 6 月 18 日")),"
    ";
  4. echo "昨日:",date("Y-m-d",strtotime("-1 day ")), "
    ";
  5. echo "明日:",date("Y-m-d",strtotime("+1 day")), "
    ";
  6. echo "1 週間後:" ,date ("Y-m-d",strtotime("+1 週間")), "
    ";
  7. echo "1 週間、2 日、4 時間 2 秒後:",date("Y-m-d G:H: s",strtotime( "+1週間2日4時間2秒")), "
    ";
  8. echo "次の木曜日:",date("Y-m-d",strtotime("次の木曜日")), "
    ";
  9. echo "先週の月曜日:".date("Y-m-d",strtotime("last Monday"))."
    ";
  10. echo "1 か月前:".date("Y-m-d" ,strtotime( "先月"))."
    ";
  11. echo "1 か月後:".date("Y-m-d",strtotime("+1 か月"))."
    "; echo "十年後: ".date("Y-m-d",strtotime("+10 year"))."
    ";
  12. $a = date("w",time()); //Get今日は今週の曜日です
  13. $startweekdate =date("Y-m-d H:i:s",strtotime($today)-($a-1)*24*3600) //今週の月曜日を取得します
  14. $ endweekdate =date("Y-m-d H :i:s",strtotime($today)+(7-$a+1)*24*3600) //今週の最後の日と来週の最初の日を取得します
  15. $endnextweekdate=date("Y-m-d" ,strtotime($endweekdate)+7*24*3600);//来週の最終日
  16. ?>
  17. $d = time(); date

  18. $w = date("w",$d); //今日は何曜日ですか?

  19. $d0 = date("Y-m-d",strtotime("-$w) day",$d)); / /週の始まり
  20. $d6 = date("Y-m-d",strtotime((6-$w)." day",$d)); //週の終わり
  21. ?>
  22. $d = time( ); //保留中の日付
  23. $w = date("w",$d) //今日は何曜日

  24. $d0 = mktime (0,0,0, date("m"),date("d") - $w,date("Y"));//週の始まり

  25. $d0 = mktime (0,0 ,0,date("m"),date( "d") - $w + 6,date("Y"));//週の終わり
  26. ?>
  27. $date = time() ;

  28. $w = date("w",$d);

  29. $d0 = date("Y-m-d",strtotime("-$w day",$date));週の始まり
  30. $d6 = date("Y-m-d",strtotime ((6-$w)." day",$date)); //週の終わり
  31. ?>
  32. $date1 = date("Y-m-d", strtotime("Sunday")); //週の始まり
  33. $date2 = date("Y-m-d",strtotime("Saturday")) //週の終わり
  34. $date1 = date("Y-m-d",strtotime("last") Sunday")); //先週の始まり
  35. $date2 = date(" Y-m-d",strtotime("last Saturday")); //先週の終わり
  36. //システムの年と月を取得します
  37. $tmp_date =date("Ym");
  38. //年を切り出す
  39. $tmp_year=substr($tmp_date ,0,4);
  40. //月を切り出す
  41. $tmp_mon =substr($tmp_date,4,2);
  42. $tmp_nextmnoth=mktime(0,0,0,$tmp_mon+1,1,$tmp_year);
  43. $tmp_forwardmnoth=mktime(0,0,0,$tmp_mon-1,1,$tmp_year);
  44. //取得当月の翌月
  45. $fm_next_mnoth=date("Ym",$tmp_nextmonth);
  46. //Get 当月の前月
  47. $fm_forward_mnoth=date("Ym",$tmp_forwardmonth);
  48. ?>
  49. $d=array("日","一","二","三","四","金曜日","土曜日");
  50. $whatday="week".$d[ date("w",strtotime($today))]; //今日の曜日を取得します
  51. $time = abs( (strtotime("2008-12-25") - strtotime(date("Y-m-d"))) /86400);/2 つの日付間の日数の差を取得します
  52. ?>
コードをコピーします
値の範囲の説明については、7.3.6 日付と時刻の型を参照してください。各タイプには、日付と時刻の値を指定するための有効な形式があります。

これは日付関数を使用した例です。 date_col 値が過去 30 日以内であるすべてのレコードを選択します。

  1. mysql>テーブルから何かを選択
  2. WHERE TO_DAYS(NOW()) - TO_DAYS(date_col)
コードをコピー

DAYOFWEEK(日付) 日付の曜日インデックスを返します (1=日曜日、2=月曜日、...7=土曜日)。これらのインデックス値は ODBC 標準に対応しています。

  1. mysql> select DAYOFWEEK('1998-02-03')
コードをコピー
WEEKDAY(日付) 日付の曜日インデックスを返します (0=月曜日、1=火曜日、...6=日曜日)。

mysql>select WEEKDAY('1997-10-04 22:23:00');
mysql>select WEEKDAY('1997-11-05'); 2
  1. コードをコピー
  2. DAYOFMONTH(日付) date の日付を 1 ~ 31 の範囲で返します。
mysql> DAYOFMONTH('1998-02-03')

コードをコピー
  1. DAYOFYEAR(日付) date の年間通算日を 1 ~ 366 の範囲で返します。
mysql> DAYOFYEAR('1998-02-03')

コードをコピー

MONTH(日付) 日付の月を 1 ~ 12 の範囲で返します。
mysql> select MONTH('1998-02-03')
コードをコピー

DAYNAME(日付) 日付の曜日名を返します。
  1. mysql> select DAYNAME("1998-02-05")
コードをコピー
MONTHNAME(日付) 日付の月名を返します。

    mysql> select MONTHNAME("1998-02-05")
  1. コードをコピー
QUARTER(日付) 日付の四半期を 1 ~ 4 の範囲で返します。

mysql> select QUARTER('98-04-01')
  1. コードをコピー
WEEK(日付) ​ WEEK(日付、最初) 日曜日が週の最初の日である場所の場合、その日付の週番号を 0 ~ 52 の範囲で返す 1 つの引数があります。WEEK() 形式の 2 つの引数を使用すると、次のことが可能になります。 週の始まりが日曜日か月曜日かを指定します。 2 番目のパラメータが 0 の場合、週は日曜日から始まり、2 番目のパラメータが 1 の場合、 月曜日から始まります。 &Mysql と GT; 週を選択 ('1998-02-20')
Mysql と GT; WEEK('1998-02-20',1);
コードをコピー

YEAR(日付) 日付の年を 1000 ~ 9999 の範囲で返します。
  1. mysql> select YEAR('98-02-03')
コードをコピー

HOUR(時間) 0 ~ 23 の範囲の時間を返します。

  1. mysql> select HOUR('10:05:03');
  2. コードをコピー
  3. MINUTE 時間の分を 0 ~ 59 の範囲で返します。
mysql> select MINUTE('98-02-03 10:05:03')

コードをコピー
  1. SECOND; 0 ~ 59 の範囲の秒数を返します。
mysql> select SECOND('10:05:03'); 3
コードをコピー

PERIOD_ADD(P,N) フェーズ P に N か月を追加します (YYMM または YYYYMM 形式)。 YYYYMM 形式で値を返します。位相パラメータ P は日付値ではないことに注意してください。
  1. mysql> select PERIOD_ADD(9801,2)
コードをコピー
PERIOD_DIFF(P1,P2) 期間 P1 と P2 の間の月数を返します。P1 と P2 は YYMM または YYYYMM の形式でなければなりません。期間パラメータ P1 および P2 は日付値ではないことに注意してください。

    mysql>select PERIOD_DIFF(9802,199703)
  1. コードをコピーします

DATE_ADD(日付,INTERVAL expr型) ​ DATE_SUB(日付,INTERVAL式型) ​ ADDDATE(日付,INTERVAL式の型) ​ SUBDATE(日付,INTERVAL式型) これらの関数は日付操作を実行します。 MySQL 3.22 の時点では、これらは新しいものです。 ADDDATE() と SUBDATE() は、DATE_ADD() と DATE_SUB() の同義語です。 MySQL 3.23 では、DATE_ADD() と DATE_SUB() の代わりに + と - を使用できます。 (例を参照) date は開始日を指定する日付です DATETIME または DATE 値。expr は開始日に加算または減算される間隔値を指定する式です。expr は文字列です。 「-」開始は負の間隔を示します。 type は、式をどのように解釈するかを指定するキーワードです。日付からの EXTRACT(type FROM date) 関数 「タイプ」間隔を返します。次の表は、type パラメータと expr パラメータの関係を示しています。 type 値の意味 予期される expr 形式 SECONDS 秒 SECONDS MINUTE 分 MINUTE 時間 時間 デイデイズ 月 月 月 年 年 MINUTE_SECOND 分と秒 "MINUTES:SECONDS" HOUR_MINUTE 時と分 "HOURS:MINUTES" DAY_HOUR 曜日と時間 "DAYS HOURS" YEAR_MONTH 年と月 "YEARS-MONTHS" HOUR_SECOND 時、分、 "HOURS:MINUTES:SECONDS" DAY_MINUTE 日、時間、分 "DAYS HOURS:MINUTES" DAY_SECOND 日、時、分、秒 "DAYS 時間:分:秒"

MySQL では、expr 形式の句読点区切り文字を使用できます。推奨される区切り文字が表示されることを示します。日付パラメータが DATE 値であり、計算が単に YEAR、MONTH、DAY コンポーネントが含まれ (つまり、時間コンポーネントは含まれません)、結果は DATE 値になります。それ以外の場合、結果は DATETIME 値になります。

    mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 秒; 1998-01-01 00:00:00
  1. mysql> 997 ;
  2. -> 1998-01-01
  3. mysql> SELECT "1998-01-01" - 間隔 1 秒;
  4. -> 1997-12-31 23:59:59
  5. mysql> 31 23:59:59",
  6. 間隔 1 秒);
  7. ->1998-01-01 00:00:00
  8. mysql>SELECT DATE_ADD("1997-12-31 23:59:59",
  9. 間隔 1日);
  10. -> 1998-01-01 23:59:59
  11. SELECT DATE_ADD("1997-12-31 23:59:59",
  12. -> 1998-01-01 00:01:00
  13. mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
  14. INTERVAL "1 1:1:1" DAY_SECOND); 30 22:58:59
  15. mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
  16. INTERVAL "-1 10" DAY_HOUR); 1997-12-30 14:00:00
  17. mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY)
  18. -> 1999-07-02 からの年
  19. mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); 199907
  20. MYSQL> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); -> 20102
  21. コードをコピー
  22. 指定した間隔値が短すぎる場合 (type キーワードで予期される間隔を除く)、MySQL は間隔値の左端の部分が省略されたものとみなします。例えば、 DAY_SECOND のタイプを指定した場合、値 expr には日、時、分、秒のコンポーネントが含まれると想定されます。 「1:10」のような値を指定すると、 MySQL は、日と時間の部分が欠落しており、値が分と秒を表すものと想定します。つまり、「1:10」DAY_SECOND は「1:10」MINUTE_SECOND と同等です。 これは、MySQL が TIME 値を時刻ではなく経過時間を表すように解釈する方法とあいまいです。本当に間違った日付を使用した場合、 結果は NULL です。 MONTH、YEAR_MONTH、または YEAR を増分し、結果の日付が新しい月の最大日数を超える場合、日数は新しい月の最大日数に調整されます。
mysql> select DATE_ADD('1998-01-30', Interval 1 month);
-> 1998-02-28
前の例の INTERVAL という単語に注意してください。および type キーワードでは大文字と小文字が区別されません。 今日の日付) 日付を指定して、(0 年からの) 日数を返します。

mysql> select TO_DAYS(950501)
    mysql> select TO_DAYS('1997-10-07');
  1. コードをコピー
TO_DAYS()グレゴリオ暦 (1582 年) の出現以前の値での使用は意図されていません。 FROM_DAYS(N) 日数 N を指定すると、DATE 値を返します。

mysql> FROM_DAYS(729669)
    -> '1997-10-07'
  1. ;

    TO_DAYS() は、グレゴリオ暦 (1582 年) の出現以前の値で使用することを意図していません。

    DATE_FORMAT(日付,形式) フォーマット文字列に従って日付値をフォーマットします。フォーマット文字列では次の修飾子を使用できます: %M 月名 (1 月....12 月) %W 曜日名 (日曜日....土曜日) %D 英語の接頭辞が付いた日付 (1st、2nd、3rd など) %Y 年、数字、4 桁 %y 年、数字、2 桁 %a 曜日の短縮名 (Sun....Sat) %d 月の日数、数字 (00……31) %e 月の日数、数値 (0……31) %m 月、数字 (01……12) %c 月、数値 (1……12) %b 月の短縮名 (Jan....Dec) %j 年間の日数 (001……366) %H 時間 (00……23) %k 時間 (0...23) %h 時間 (01……12) %I 時間 (01……12) %l 時間 (1...12) %i 分、数値 (00……59) %r 時間、12 時間 (hh:mm:ss [AP]M) %T 時間、24 時間 (hh:mm:ss) %S 秒 (00……59) %s 秒 (00……59) %p 午前または午後 %w 週の日数 (0=日曜日...6=土曜日) %U 曜日 (0...52)、日曜日が週の最初の日です %u 曜日 (0...52)、月曜日が週の最初の日です %% リテラルの「%」。

    他のすべての文字は解釈されずに結果にコピーされます。

      mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); '1997 年 10 月土曜日'
    1. mysql> 1997-10-04 22:23:00', '%H:%i:%s'); '22:23:00'
    2. mysql>select DATE_FORMAT('1997-10-04 22:23) :00',
    3. '%D %y %d %m %b %j'); '4th 97 Sat 04 10 Oct 277'
    4. mysql> select DATE_FORMAT('1997-10-04 22: 23:00',
    5. '%H %k %I %r %T %S %w'); '22 22 10 10:23:00 00 6'
    6. コードをコピーします
    7. MySQL3.23では、書式修飾文字の前に%が必要です。 MySQL の以前のバージョンでは、% はオプションでした。
    TIME_FORMAT(時間,形式) これは上記の DATE_FORMAT() 関数と同様に使用されますが、書式指定文字列には、時、分、秒を処理する書式修飾子のみを含めることができます。 他の修飾子は NULL 値または 0 を生成します。 CURDATE() ​ 現在の日付 関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、今日の日付値を「YYYY-MM-DD」または YYYYMMDD 形式で返します。
    mysql>select CURDATE(); '1997-12-15'

    mysql>select

    ->

    コードをコピー

    CURTIME() ​ 現在の時刻 関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、現在の時刻値を「HH:MM:SS」または HHMMSS 形式で返します。
    1. mysql> select CURTIME(); '23:50:26'
    2. mysql> select CURTIME() + 0;
    今() ​ SYSDATE() ​ CURRENT_TIMESTAMP 関数が文字列と数値のどちらを操作するかに応じて、現在の日付と時刻を「YYYY-MM-DD HH:MM:SS」または YYYYMMDDHHMMSS 形式で返します。 コンテキストが使用されます。

    mysql> select NOW(); '1997-12-15 23:50:26'

    -> 19971215235026
      コードをコピー
    1. UNIX_TIMESTAMP() ​ UNIX_TIMESTAMP(日付) 引数なしで呼び出された場合は、Unix タイムスタンプ (「1970-01-01 00:00:00」GMT からの秒数) を返します。 UNIX_TIMESTAMP() が 日付パラメータが呼び出され、「1970-01-01 00:00:00」GMT からの秒数が返されます。 date には DATE 文字列または DATETIME を指定できます 文字列、TIMESTAMP、または YYMMDD または YYYYMMDD 形式の現地時間の数値。 mysql> select UNIX_TIMESTAMP();
    ->882226357 mysql>select UNIX_TIMESTAMP('1997-10-04 22:23:00')

    ;

    TIMESTAMP に UNIX_TIMESTAMP を使用する場合列にあるように、関数は暗黙的な「文字列から Unix タイムスタンプ」への変換を行わずに、値を直接受け入れます。
    1. FROM_UNIXTIME(unix_timestamp) 関数が文字列内にあるかどうかに応じて、unix_timestamp パラメータで表される値を「YYYY-MM-DD HH:MM:SS」または YYYYMMDDHHMMSS 形式で返します。 または は数値の文脈で使用されます。
    2. mysql> select FROM_UNIXTIME(875996580);
    -> '1997-10-04 22:23:00'
    mysql> select FROM_UNIXTIME(875996580); -> 19971004222300
    コードをコピー

    FROM_UNIXTIME(unix_timestamp,format) フォーマット文字列に従ってフォーマットされた Unix タイムスタンプを表す文字列を返します。形式には、DATE_FORMAT() 関数でリストされた項目を含めることができます 同じ修飾子です。

    1. mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
    2. '%Y %M %h:%i:%s %x'); '1997 年 12 月 23 日 03:43:30 x '
    コードをコピー
    SEC_TO_TIME(秒) 秒パラメータを時、分、秒に変換して返します。値は、関数が文字列であるか数値であるかに応じて、「HH:MM:SS」または HHMMSS でフォ​​ーマットされます。 文脈で使用されます。

    mysql> SEC_TO_TIME(2378); '00:39:38'
    ->
    1. コードをコピー
    2. TIME_TO_SEC (時間) 秒に変換された時間パラメータを返します。
    mysql> TIME_TO_SEC('22:23:00'); mysql> TIME_TO_SEC('00:39:38'); 8

    コードをコピーする
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。