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句を活用すれば、日付と時刻を柔軟に組み合わせた並べ替えが簡単に実現できます。ログデータの最新順表示など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
C言語で配列を降順にソートするプログラムの書き方
問題与えられた配列を、書かれたコードに従って降順または昇順に並べ替えます。ここでは、配列を降順(大きい順)にソートするCプログラムを紹介します。解決策配列とは、共通の名前を持つ関連性のあるデータ項目の集まりのことです。配列内の特定の値は、「インデックス番号(添字)」によって識別されます。配列の宣言配列を宣言するための基本構文は以下のとおりです。データ型 配列名 [サイズ];例えば、次のように宣言します。float marks[50];この宣言により、「marks」は50個のfloat型要素を格納できる配列となります。int number[10];この宣言により、「number」は最大10個の整
-
C#でリストの要素を降順に並べ替える方法
C#では、LINQのorderby句とdescendingキーワードを組み合わせることで、リスト内の要素を簡単に降順(大きい順・逆アルファベット順)に並べ替えることができます。サンプルデータの準備まず、以下のようなEmployeeクラスのオブジェクトを格納したリストを用意します。IList<Employee> emp = new List<Employee>() { new Employee() { EmployeeRank = 4, EmpName = Amit, EmpMarks = 90 }, new Employee() { EmployeeRa