MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで日付と時刻を降順に並べ替える方法を解説

MySQLでは、ORDER BY句を使うことで、日付と時刻のカラムを降順(DESC)や昇順(ASC)で自由に並べ替えることができます。本記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、日付と時刻を組み合わせた並べ替えの方法を具体的に解説します。

1. サンプルテーブルの作成

まず、日付と時刻を格納するためのテーブルを作成します。以下のクエリを実行してください。

mysql> create table SortByDateAndTime
    -> (
    -> UserId int,
    -> UserName varchar(100),
    -> IssueDate date,
    -> IssueTime time
    -> );
Query OK, 0 rows affected (0.60 sec)

2. テーブルへのデータ挿入

次に、INSERTコマンドを使用してレコードを挿入します。同じ日付で異なる時刻を持つ4件のデータを登録します。

mysql> insert into SortByDateAndTime values(1,'John','2018-12-16','10:30');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SortByDateAndTime values(2,'Bob','2018-12-16','10:10');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SortByDateAndTime values(3,'Carol','2018-12-16','10:20');
Query OK, 1 row affected (0.10 sec)

mysql> insert into SortByDateAndTime values(4,'Sam','2018-12-16','10:00');
Query OK, 1 row affected (0.15 sec)

3. 登録したレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from SortByDateAndTime;

出力結果

+--------+----------+------------+-----------+
| UserId | UserName | IssueDate  | IssueTime |
+--------+----------+------------+-----------+
|      1 | John     | 2018-12-16 | 10:30:00  |
|      2 | Bob      | 2018-12-16 | 10:10:00  |
|      3 | Carol    | 2018-12-16 | 10:20:00  |
|      4 | Sam      | 2018-12-16 | 10:00:00  |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

4. 日付と時刻を降順で並べ替える

日付と時刻の両方を降順でソートするには、ORDER BY句にDESCを指定します。以下がそのクエリです。

mysql> select UserId,UserName,date(IssueDate) as date1,IssueTime from
SortByDateAndTime
   -> order by date(IssueDate)desc,IssueTime desc;

実行すると、時刻の新しい順(降順)にレコードが並べ替えられます。

出力結果

+--------+----------+------------+-----------+
| UserId | UserName | date1      | IssueTime |
+--------+----------+------------+-----------+
|      1 | John     | 2018-12-16 | 10:30:00  |
|      3 | Carol    | 2018-12-16 | 10:20:00  |
|      2 | Bob      | 2018-12-16 | 10:10:00  |
|      4 | Sam      | 2018-12-16 | 10:00:00  |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

5. 日付は降順・時刻は昇順で並べ替える

用途によっては、「日付は降順だが時刻は昇順」という組み合わせでソートしたいケースもあります。その場合は、時刻側にASCを指定します。

mysql> select UserId,UserName,date(IssueDate) as date1,IssueTime from
SortByDateAndTime
   -> order by date(IssueDate) desc,IssueTime asc;

出力結果

+--------+----------+------------+-----------+
| UserId | UserName | date1      | IssueTime |
+--------+----------+------------+-----------+
|      4 | Sam      | 2018-12-16 | 10:00:00  |
|      2 | Bob      | 2018-12-16 | 10:10:00  |
|      3 | Carol    | 2018-12-16 | 10:20:00  |
|      1 | John     | 2018-12-16 | 10:30:00  |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

まとめ

MySQLで日付と時刻を並べ替える際のポイントは以下の通りです。

  • 降順で並べ替えたい場合: ORDER BY カラム名 DESC を指定する
  • 複数カラムでのソート: ORDER BY 日付 DESC, 時刻 DESC のようにカンマ区切りで指定でき、それぞれ異なる順序(ASC/DESC)を設定可能
  • date()関数: DATE型から日付部分だけを取り出してソートに利用できる

このようにORDER BY句を活用すれば、日付と時刻を柔軟に組み合わせた並べ替えが簡単に実現できます。ログデータの最新順表示など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。

  1. C言語で配列を降順にソートするプログラムの書き方

    問題与えられた配列を、書かれたコードに従って降順または昇順に並べ替えます。ここでは、配列を降順(大きい順)にソートするCプログラムを紹介します。解決策配列とは、共通の名前を持つ関連性のあるデータ項目の集まりのことです。配列内の特定の値は、「インデックス番号(添字)」によって識別されます。配列の宣言配列を宣言するための基本構文は以下のとおりです。データ型 配列名 [サイズ];例えば、次のように宣言します。float marks[50];この宣言により、「marks」は50個のfloat型要素を格納できる配列となります。int number[10];この宣言により、「number」は最大10個の整

  2. C#でリストの要素を降順に並べ替える方法

    C#では、LINQのorderby句とdescendingキーワードを組み合わせることで、リスト内の要素を簡単に降順(大きい順・逆アルファベット順)に並べ替えることができます。サンプルデータの準備まず、以下のようなEmployeeクラスのオブジェクトを格納したリストを用意します。IList<Employee> emp = new List<Employee>() { new Employee() { EmployeeRank = 4, EmpName = Amit, EmpMarks = 90 }, new Employee() { EmployeeRa