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

MySQLで最新の時刻を持つレコードを取得する方法

文字列として保存された時刻データから最新(最も遅い時刻)のレコードを取得するには、ORDER BY 句と STR_TO_DATE() 関数を組み合わせて使用します。ここでは、varchar型の時刻データを正しくソートする手順を解説します。

サンプルテーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable
    -> (
    -> DueTime varchar(20)
    -> );
Query OK, 0 rows affected (0.87 sec)

テストデータの挿入

次に、insertコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('7:30AM');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('9:00PM');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('11:00PM');
Query OK, 1 row affected (0.13 sec)

登録済みレコードの確認

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

mysql> select * from DemoTable;

このクエリを実行すると、次のような出力が得られます。

+---------+
| DueTime |
+---------+
| 7:30AM  |
| 9:00PM  |
| 11:00PM |
+---------+
3 rows in set (0.00 sec)

最新の時刻のレコードを取得するクエリ

時刻が文字列として保存されている場合、そのまま並べ替えると正しい順序になりません。そこで STR_TO_DATE() を使って時刻形式(%h:%i%p = 12時間制の時:分+AM/PM)に変換してから降順にソートし、LIMIT 1 で先頭の1件だけを取得します。

mysql> select * from DemoTable
    -> order by str_to_date(DueTime, '%h:%i%p') desc limit 1;

実行結果は以下のとおりです。

+---------+
| DueTime |
+---------+
| 11:00PM |
+---------+
1 row in set (0.00 sec)

このように、STR_TO_DATE() で文字列を日付・時刻型に変換してからソートすることで、「11:00PM」が最も新しい時刻として正しく抽出されました。24時間制の時刻データの場合は、フォーマット指定子を「%H:%i」に変更すれば同様に対応できます。

  1. PHPとMySQLで時刻を扱う方法|strtotime()とDATE_FORMAT()による形式変換

    PHPで時刻形式を変換する方法 PHPで時刻データを扱う際、strtotime()関数を使えば、「8:55 PM」のような人間が読みやすい12時間制の表記を、データベースで扱いやすい24時間制(HH:MM:SS)へ簡単に変換できます。 PHPコード例 $timeValue = 8:55 PM; $changeTimeFormat = date(H:i:s, strtotime($timeValue)); echo(24時間制への変換結果=); echo($changeTimeFormat); このコードでは、まずstrtotime()が文字列「8:55 PM」をUNIXタイムスタンプに変換

  2. Javaを使ってMySQLテーブルにレコードを挿入する方法

    はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable(   Id int,   Name varchar(30),&