MySql での時間比較の実装 unix_timestamp() unix_timestamp 関数は、引数を 1 つ取ることも、引数をまったく取らないこともできます。 戻り値は符号なし整数です。パラメータがない場合、1970年1月1日00:00:00から経過した秒数を返します。 パラメータが使用され、それが時間型または時間型の文字列表現である場合、それは 1970-01-01 00:00:00 から指定された時間までの秒数になります。 この関数を使用すると、時間の比較を符号なし整数の比較に変換するのが自然です。 たとえば、時間が範囲内であるかどうかを判断する unix_timestamp( 'start ') と unix_timestamp( 'end') の間の unix_timestamp( time ) 以下は日付関数を使用した例です。 次のクエリは、date_col の値が過去 30 日以内であるすべてのレコードを選択します。 mysql> テーブルから何かを選択します WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; 曜日(日付) 日付の曜日インデックスを返します (1=日曜日、2=月曜日、... 7=土曜日)。これらのインデックス値は ODBC 標準に対応しています。 mysql> DAYOFWEEK('1998-02-03') を選択します。 -> 3 曜日(日付) 日付の曜日インデックスを返します (0=月曜日、1=火曜日、... 6=日曜日)。 mysql> WEEKDAY('1997-10-04 22:23:00') を選択します。 -> 5 mysql> WEEKDAY('1997-11-05') を選択します。 -> 2 DAYOFMONTH(日付) 日付の月の日を 1 から 31 の範囲で返します。 mysql> DAYOFMONTH('1998-02-03') を選択します。 -> 3 DAYOFYEAR(日付) 日付の年間通算日を 1 から 366 の範囲で返します。 mysql> DAYOFYEAR('1998-02-03') を選択します。 -> 34 月(日付) 1 から 12 までの範囲で日付の月を返します。 mysql> MONTH('1998-02-03') を選択します。 -> 2 DAYNAME(日付) 日付の曜日を返します。 mysql> DAYNAME("1998-02-05") を選択します。 -> '木曜日' 月名(日付) 日付内の月の名前を返します。 mysql> MONTHNAME("1998-02-05") を選択します。 -> '2月' 四半期(日付) 日付の四半期を 1 ~ 4 の範囲で返します。 mysql> QUARTER('98-04-01') を選択します。 -> 2 週(日付) WEEK(日付,最初) 日曜日が週の最初の曜日である場所では、0 から 52 の範囲で日付の週番号を返す単一の引数があります。2 つの引数形式 WEEK() を使用すると、週が日曜日から始まるか、月曜日から始まるかを指定できます。 2 番目の引数が 0 の場合、週は日曜日に始まり、2 番目の引数が 1 の場合、週は月曜日に始まります。 mysql> WEEK('1998-02-20') を選択します。 -> 7 mysql> WEEK('1998-02-20',0) を選択します。 -> 7 mysql> WEEK('1998-02-20',1) を選択します。 -> 8 年(日付) 1000 から 9999 の範囲で日付の年を返します。 mysql> YEAR('98-02-03') を選択します。 -> 1998 HOUR(時間) 0 から 23 までの範囲の時間を返します。 mysql> HOUR('10:05:03') を選択します。 -> 10 分(時間) 0 から 59 までの範囲の分を返します。 mysql> MINUTE('98-02-03 10:05:03') を選択します。 -> 5 2回目(時間) 0 から 59 までの範囲の秒数を返します。 mysql> SECOND('10:05:03')を選択します。 -> 3 期間追加(P,N) 期間 P に N か月を追加します (形式は YYMM または YYYYMM)。 YYYYMM 形式の値を返します。フェーズ パラメータ P は日付値ではないことに注意してください。 mysql> PERIOD_ADD(9801,2) を選択します。 -> 199803 周期_DIFF(P1,P2) 期間 P1 と P2 の間の月数を返します。P1 と P2 は、YYMM または YYYYMM の形式にする必要があります。期間パラメータ P1 と P2 は日付値ではないことに注意してください。 mysql> PERIOD_DIFF(9802,199703) を選択します。 -> 11 DATE_ADD(日付、INTERVAL 式タイプ) 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」を返します。次の表は、typeとexprパラメータがどのように関連しているかを示しています。type 値 意味 期待されるexpr 形式 2秒 MySQL では、expr 形式で任意の句読点区切り文字を使用できます。提案された区切り文字が表示されていることを示します。日付引数が DATE 値であり、計算に YEAR、MONTH、DAY 部分のみ (つまり、時刻部分なし) が含まれている場合、結果は DATE 値になります。それ以外の場合、結果は DATETIME 値になります。 mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; -> 1998-01-01 00:00:00 mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; -> 1998-01-01 mysql> SELECT "1998-01-01" - 間隔 1 秒; -> 1997-12-31 23:59:59 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 間隔1秒); -> 1998-01-01 00:00:00 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 間隔1日); -> 1998-01-01 23:59:59 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", 間隔 "1:1" 分秒); -> 1998-01-01 00:01:00 mysql> SELECT DATE_SUB("1998-01-01 00:00:00", 間隔 "1 1:1:1" DAY_SECOND); -> 1997-12-30 22:58:59 mysql> SELECT DATE_ADD("1998-01-01 00:00:00", 間隔 "-1 10" DAY_HOUR); -> 1997-12-30 14:00:00 mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); -> 1997-12-02 mysql> SELECT EXTRACT(YEAR FROM "1999-07-02"); -> 1999 mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); -> 199907 mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); -> 20102 短すぎる間隔値を指定した場合(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', 間隔 1 か月); -> 1998-02-28 前の例から、INTERVAL という単語と type キーワードは大文字と小文字が区別されないことに注意してください。 TO_DAYS(日付) 日付を指定すると、日数(0 年からの日数)を返します。 mysql> TO_DAYS(950501)を選択します。 -> 728779 mysql> TO_DAYS('1997-10-07') を選択します。 -> 729669 FROM_DAYS(N) 日数 N を指定すると、DATE 値を返します。 mysql> FROM_DAYS(729669)を選択します。 -> '1997-10-07' DATE_FORMAT(日付,形式) フォーマット文字列に従って日付値をフォーマットします。フォーマット文字列では、次の修飾子を使用できます: %M 月名 (1 月...12 月) %W 曜日 (日曜日...土曜日) その他の文字はすべて解釈されずに結果にコピーされます。 mysql> DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') を選択します。 -> 「1997年10月土曜日」 mysql> DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s') を選択します。 -> '22:23:00' mysql> DATE_FORMAT('1997-10-04 22:23:00', を選択 '%D %y %a %d %m %b %j'); -> '4th 97 土 04 10 10月 277' mysql> DATE_FORMAT('1997-10-04 22:23:00', を選択 '%H %k %I %r %T %S %w'); -> '22 22 10 10:23:00 PM 22:23:00 00 6' MySQL 3.23 以降では、フォーマット修飾子文字の前に % が必要です。 MySQL の以前のバージョンでは、% はオプションです。 TIME_FORMAT(時刻,形式) これは上記の DATE_FORMAT() 関数と同様に使用されますが、書式文字列には、時間、分、秒を処理する書式修飾子のみを含めることができます。その他の修飾子は NULL 値または 0 を生成します。 CURDATE() CURRENT_DATE は、関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、今日の日付値を 'YYYY-MM-DD' または YYYYMMDD 形式で返します。 mysql> CURDATE() を選択します。 -> '1997-12-15' mysql> CURDATE() + 0 を選択します。 -> 19971215 現在の時間() 現在の時刻 関数が文字列コンテキストで使用されているか数値コンテキストで使用されているかに応じて、現在の時刻値を 'HH:MM:SS' または HHMMSS 形式で返します。 mysql> CURTIME() を選択します。 -> '23:50:26' mysql> CURTIME() + 0 を選択します。 -> 235026 今() SYSDATE() CURRENT_TIMESTAMP 関数が文字列コンテキストで使用されているか数値コンテキストで使用されているかに応じて、現在の日付と時刻を 'YYYY-MM-DD HH:MM:SS' または YYYYMMDDHHMMSS 形式で返します。 mysql> NOW() を選択します。 -> '1997-12-15 23:50:26' mysql> NOW() + 0 を選択します。 -> 19971215235026 UNIX_TIMESTAMP() mysql> UNIX_TIMESTAMP() を選択します。 -> 882226357 mysql> UNIX_TIMESTAMP('1997-10-04 22:23:00')を選択します。 -> 875996580 UNIX_TIMESTAMP を TIMESTAMP 列で使用すると、関数は暗黙的な「文字列から UNIX タイムスタンプへの」変換を行わずに値を直接受け入れます。 FROM_UNIXTIME(unix_timestamp) 関数が文字列コンテキストで使用されるか数値コンテキストで使用されるかに応じて、unix_timestamp 引数によって表される値を 'YYYY-MM-DD HH:MM:SS' または YYYYMMDDHHMMSS 形式で返します。 mysql> FROM_UNIXTIME(875996580) を選択します。 -> '1997-10-04 22:23:00' mysql> FROM_UNIXTIME(875996580) + 0 を選択します。 -> 19971004222300 FROM_UNIXTIME(unix_timestamp,フォーマット) フォーマット文字列に従ってフォーマットされた Unix タイムスタンプを表す文字列を返します。形式には、DATE_FORMAT() 関数にリストされているものと同じ修飾子を含めることができます。 mysql> FROM_UNIXTIME(UNIX_TIMESTAMP(), を選択) '%Y %D %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' mysql> SEC_TO_TIME(2378) + 0 を選択します。 -> 3938 TIME_TO_SEC(時間) 時間パラメータを秒数に変換して返します。 mysql> TIME_TO_SEC('22:23:00') を選択します。 -> 80580 mysql> TIME_TO_SEC('00:39:38') を選択します。 -> 2378 MySQL には多くの日付関数があります。日付の比較に使用する関数は、必ずしも単一の関数であるとは限りません。複数の関数の組み合わせである場合もあります。そのため、想像力を働かせる必要があります。 以下もご興味があるかもしれません:
|
<<: Nginx を使用してクロスドメイン Vue 開発環境を処理する方法
>>: Jsモジュールパッケージのエクスポートの使用法と違いにはインポートが必要
説明: ブロック要素に表示されるテキストの行数を制限します。 -webkit-line-clamp ...
div の背景を透明にする一般的な方法は 2 つあります。 1. 不透明度属性を 0 ~ 1 の値に...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...
Apollo オープンソース アドレス: https://github.com/ctripcorp/...
HTML 入力属性値属性value 属性は、入力フィールドの初期値を指定します。 <フォーム...
序文<router-link> タグは、Vue アプリ内のさまざまなページ間を移動するた...
作業開発プロセス中に、顧客の名前、携帯電話番号、ID カード、およびドキュメントの種類を動的に保存す...
目次Dockerカスタムネットワーク1. カスタムネットワークの紹介2. カスタムネットワークを作成...
1. CSSの記述形式1. インラインスタイルCSSコードを開始タグに直接記述することができます&l...
カバーインデックスとは何ですか?クエリで使用されるすべてのフィールドを含むインデックスを作成すること...
ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...
最終結果はこんな感じです、かわいいでしょう… PS: HTML と CSS の知識があればベストです...
目次次のチェックミックスイン$強制更新設定、削除フィルター指令その他の単純な共通プロパティとメソッド...
1. なぜこの記事を書くのですか?重複リクエストの処理に関する記事をたくさん読んだことがあるでしょう...