序文: プロジェクト開発では、一部のビジネス テーブル フィールドで日付と時刻の型が使用されることが多く、そのようなフィールドに対する後続のクエリも必要になります。日付と時刻のクエリには多くの要件があります。この記事では、日付と時刻のフィールドの標準化されたクエリ方法について簡単に説明します。 1. 日付と時刻の種類の概要 MySQL でサポートされている日付と時刻の型は、DATETIME、TIMESTAMP、DATE、TIME、および YEAR です。これらの型の比較は次のとおりです。 日付と時刻のフィールド タイプを選択する場合は、ストレージ要件に基づいて適切なタイプを選択します。 2. 日付と時刻に関する機能 日付と時刻のフィールドを処理するための関数は多数あり、その一部はクエリでよく使用されます。以下では、関連するいくつかの関数の使用方法を紹介します。
使用例: mysql> CURRENT_DATE、CURRENT_TIME、NOW() を選択します。 +--------------+--------------+---------------------+ | 現在の日付 | 現在の時刻 | 現在() | +--------------+--------------+---------------------+ | 2020-06-03 | 15:09:37 | 2020-06-03 15:09:37 | +--------------+--------------+---------------------+ mysql> TO_DAYS('2020-06-03 15:09:37') を選択します。 TO_DAYS('2020-06-03')-TO_DAYS('2020-06-01'); +--------------------------------+----------------------------------------------+ | TO_DAYS('2020-06-03 15:09:37') | TO_DAYS('2020-06-03')-TO_DAYS('2020-06-01') | +--------------------------------+----------------------------------------------+ | 737944 | 2 | +--------------------------------+----------------------------------------------+ mysql> MONTH('2020-06-03'),WEEK('2020-06-03'),YEAR('2020-06-03') を選択します。 +---------------------+--------------------+--------------------+ | 月('2020-06-03') | 週('2020-06-03') | 年('2020-06-03') | +---------------------+--------------------+--------------------+ | 6 | 22 | 2020 | +---------------------+--------------------+--------------------+ # DATEDIFF(date1, date2)は開始時刻date1と終了時刻date2の間の日数を返しますmysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1, -> DATEDIFF('2017-11-30','2017-12-15') を col2 として計算します。 +------+------+ | 列1 | 列2 | +------+------+ | 1 | -15 | +------+------+ 3. 日付と時刻フィールドの標準化されたクエリ 上記の内容はすべて、クエリのニーズに合わせて準備されています。プロジェクトの要件では、日付や時間の条件に基づいてフィルター クエリが実行されることがよくあります。場合によっては、このような要件は異なります。日付と時刻のフィールドでクエリを記述する方法を学びましょう。 まず、クエリをより正確にするために、仕様に従ってデータを挿入する必要があります。たとえば、年は 4 桁を使用し、日と月は妥当な範囲内でなければなりません。テストの便宜上、テーブルを作成していくつかのデータを挿入します。 テーブル `t_date` を作成します ( `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自動増分主キー', `year_col` YEAR NOT NULL COMMENT '年', `date_col` 日付 NOT NULL COMMENT '日付', `time_col` 時間 NOT NULL コメント 'time', `dt_col` datetime NOT NULL COMMENT 'datetime time', `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻', 主キー (`increment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='time test table'; # 日付と時刻の両方に現在の日付または時刻を選択します INSERT INTO t_date (year_col,date_col,time_col,dt_col,create_time) VALUES (年(現在()),日付(現在()),時刻(現在()),現在(),現在()); # 指定した日付または時刻を挿入する INSERT INTO t_date ( `year_col`, `date_col`, `time_col`, `dt_col`, `create_time` ) 価値観 ( 2020, '2020-06-03', '09:00:00', '2020-06-03 10:04:04', '2020-06-03 10:04:04' ), ( 2020, '2020-05-10', '18:00:00', '2020-05-10 16:00:00', '2020-05-10 16:00:00' ), ( 2019, '2019-10-03', '16:04:04', '2019-10-03 16:00:00', '2019-10-03 16:00:00' ), ( 2018, '2018-06-03', '16:04:04', '2018-06-03 16:00:00', '2018-06-03 16:00:00' ), ( 2000, '2000-06-03', '16:04:04', '2000-06-03 08:00:00', '2000-06-03 08:00:00' ), ( 2008, '2008-06-03', '16:04:04', '2008-06-03 08:00:00', '2008-06-03 08:00:00' ), ( 1980, '1980-06-03', '16:04:04', '1980-06-03 08:00:00', '1980-06-03 08:00:00' ); 上記のテスト テーブルのデータに基づいて、いくつかの一般的なクエリ ステートメントの記述方法を学習しましょう。 日付や時間などで検索します。 year_col = 2020 である t_date から * を選択します。 date_col = '2020-06-03' の場合、t_date から * を選択します。 dt_col = '2020-06-03 16:04:04' である t_date から * を選択します。 日付または時間範囲で検索 date_col > '2018-01-01' となる t_date から * を選択します。 t_date から * を選択します。ここで、dt_col >= '2020-05-01 00:00:00' かつ dt_col < '2020-05-31 23:59:59' です。 t_date から * を選択し、dt_col が '2020-05-01 00:00:00' から '2020-05-31 23:59:59' の間であるものを選択します。 今月のデータを照会する # 今月の create_time のデータを照会します。 select * from t_date where DATE_FORMAT(create_time, '%Y-%m' ) = DATE_FORMAT( CURDATE( ) , '%Y-%m' ); 過去数日間のデータを照会する # date_col に基づいて過去 7 日間または 30 日間のデータを照会します。SELECT * FROM t_date where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(date_col); SELECT * FROM t_date where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(date_col); その他のクエリ記述の種類 # 今日のデータをクエリする SELECT * FROM t_date WHERE TO_DAYS(create_time) = TO_DAYS(NOW()); # 特定の月のデータを照会する SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y-%m')='2020-06'; # 特定の年のデータを照会する SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y') = 2020; SELECT * FROM t_date WHERE YEAR(create_time) = 2020; # 日付範囲に従ってデータをクエリし、並べ替えます SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y') BETWEEN '2018' AND '2020' ORDER BY create_time DESC; 要約: この記事では、まず日付と時刻のフィールドについて説明し、次に関連する関数の使用方法を説明し、最後によく使用されるクエリ メソッドをいくつか示します。このコンテンツがお役に立てば幸いです。実際には、クエリはより複雑になる場合があります。特にデータ量が多い場合、時間フィールドに基づくクエリは遅くなることがよくあります。この場合、インデックスの作成にも注意する必要があります。整数クエリとフィルタリングが高速になるため、時間フィールドをタイムスタンプに変換するのが最適です。また、日付と時刻のフィールドで計算を実行したり、プログラムで実行できる操作をデータベース レベルで実行したりしないように注意することもお勧めします。 上記は、MySQL で日付と時刻を照会する方法の詳細です。MySQL で日付と時刻を照会する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ノードの対応するバージョンに関する簡単な説明 node-sass sass-loader
>>: CUDA10.0 のインストールと Ubuntu での問題
<br />最も実用的なものを選んで話しましょう。まず、勤務先の都市を慎重に選ぶ必要があ...
この記事では、CentOS 7 で高可用性 Hadoop 2.10 クラスターを構築する方法を紹介し...
<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...
美しいコードは美しい Web サイトの基礎です。優れた CSS は、同様に優れた HTML の上にの...
序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...
目次序文1. JSで関数を書く方法1. 通常の関数の書き方2. 矢印関数の書き方2. 通常の関数でこ...
IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...
目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...
目次1. フロントエンドルーティングの実装原則2. vue-Routerの基本的な使い方2.1. イ...
昨夜、MySQL データベースにデータセットを挿入したときにエラーが発生しました。データベースは容赦...
Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...
1. 前提条件インポートには require.context メソッドを使用します。vite で作成...
AWS - Amazon のクラウド コンピューティング サービス プラットフォーム以前、AWS の...
1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された...
チームは新しいフレームを交換しました。すべての新しいビジネスでは、新しいフレームワークと新しいデータ...