【初心者向け】MySQLでDATE関数を使ってdatetime型から日付だけ抽出する方法

2024-04-02

MySQLのdatetime型は、日付と時刻をまとめて格納するデータ型です。しかし、場合によっては日付のみが必要になることがあります。

このチュートリアルでは、datetime型から日付のみを選択する3つの方法を紹介します。

方法1:DATE()関数

DATE()関数は、datetime型から日付部分のみを取り出す関数です。

SELECT DATE(datetime_column) FROM table_name;

SELECT DATE(created_at) FROM users;

このクエリは、usersテーブルのcreated_at列から日付のみを抽出します。

方法2:EXTRACT()関数

SELECT EXTRACT(YEAR FROM datetime_column) AS year,
       EXTRACT(MONTH FROM datetime_column) AS month,
       EXTRACT(DAY FROM datetime_column) AS day
FROM table_name;
SELECT EXTRACT(YEAR FROM created_at) AS year,
       EXTRACT(MONTH FROM created_at) AS month,
       EXTRACT(DAY FROM created_at) AS day
FROM users;

方法3:SUBSTRING()関数

SUBSTRING()関数は、文字列の一部を切り出す関数です。

SELECT SUBSTRING(datetime_column, 1, 10) AS date
FROM table_name;
SELECT SUBSTRING(created_at, 1, 10) AS date
FROM users;

datetime型から日付のみを選択するには、DATE()関数、EXTRACT()関数、SUBSTRING()関数のいずれかを使用できます。それぞれの方法にはメリットとデメリットがあるので、状況に応じて使い分けることが重要です。




SELECT DATE(created_at) AS date
FROM users;

結果

| date       |
|------------|
| 2024-03-29 |
| 2024-03-28 |
| 2024-03-27 |
| ...        |
SELECT EXTRACT(YEAR FROM created_at) AS year,
       EXTRACT(MONTH FROM created_at) AS month,
       EXTRACT(DAY FROM created_at) AS day
FROM users;
| year | month | day |
|------|------|------|
| 2024 | 3    | 29   |
| 2024 | 3    | 28   |
| 2024 | 3    | 27   |
| ...  | ...  | ...  |
SELECT SUBSTRING(created_at, 1, 10) AS date
FROM users;
| date       |
|------------|
| 2024-03-29 |
| 2024-03-28 |
| 2024-03-27 |
| ...        |

補足

これらのサンプルコードは、usersテーブルにcreated_atというdatetime型の列があることを前提としています。

また、結果の出力形式は、使用しているデータベースクライアントによって異なる場合があります。




DATE_FORMAT()関数は、datetime型を指定された形式に変換する関数です。

SELECT DATE_FORMAT(datetime_column, '%Y-%m-%d') AS date
FROM table_name;
SELECT DATE_FORMAT(created_at, '%Y-%m-%d') AS date
FROM users;

CAST()関数は、データ型を変換する関数です。

SELECT CAST(datetime_column AS DATE) AS date
FROM table_name;
SELECT CAST(created_at AS DATE) AS date
FROM users;

FROM_UNIXTIME()関数は、UNIXタイムスタンプを日付に変換する関数です。

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(datetime_column)) AS date
FROM table_name;
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(created_at)) AS date
FROM users;

mysql date datetime


MySQLでCASCADEオプションとSET NULLオプションの違い

基本的な構文例列 age のデータ型を INT から VARCHAR(255) に変更する列 name のデータ型を VARCHAR(100) から TEXT に変更する注意点データ型を変更する前に、すべてのデータが新しいデータ型に収まるかどうかを確認する必要があります。そうでない場合、データが失われる可能性があります。...


UPDATEステートメントとINCREMENT関数で実現!MySQLフィールド値の効率的な更新

方法1:UPDATEステートメントを使用する最も一般的な方法は、UPDATEステートメントを使用してフィールド値を直接更新する方法です。以下の構文を使用します。例:この例では、usersテーブルのageフィールドをすべてのユーザーに対して1ずつ増やします。...


【初心者向け】MySQLでテーブル作成時に「created_at」列に現在時刻を自動設定

MySQLでテーブルを作成する際、列にデフォルト値を設定することができます。これは、その列に明示的に値を挿入しない場合に、自動的に割り当てられる値です。DATETIME型の場合、デフォルト値として現在時刻を設定することができ、これはよく使用される設定です。...


コマンドライン vs GUI!MySQLスクリプト実行方法のメリット・デメリット

MySQLでSQLスクリプトを実行するには、いくつかの方法があります。コマンドラインMySQL WorkbenchMySQL Shellこの解説では、コマンドラインを使ってMySQLスクリプトを実行する方法について、詳しく説明します。コマンドラインは、MySQLサーバーに直接接続してSQLクエリを実行する最も基本的な方法です。...


MySQL/MariaDBデータベースのテーブルが壊れた!?焦らず試せる3つの復旧方法と予防策

MariaDBやMySQLデータベースにおいて、テーブルが破損してしまうことがあります。破損の原因としては、ハードウェア障害、ソフトウェアのバグ、予期せぬシャットダウンなどが考えられます。破損したテーブルは読み取りや書き込みができなくなり、最悪の場合はデータ損失に繋がる可能性も。...


SQL SQL SQL SQL Amazon で見る



MySQLのDATETIMEフィールドから日付のみをスマートに抽出:3つのアプローチ

DATE() 関数を使用する説明:DATE() 関数は、DATETIMEフィールドから日付部分のみを抽出します。構文:例:このクエリは、customers テーブルの created_at DATETIMEフィールドから日付部分のみを抽出し、creation_date という名前の新しい列に格納します。結果は次のようになります。


MySQLの日付条件マスターガイド:SELECT文を使いこなす

このチュートリアルでは、MySQLのSELECT文を使用して、特定の日付条件に一致するレコードを取得する方法を説明します。具体的には、日付のみが条件に一致するレコードを取得する方法に焦点を当てます。前提知識このチュートリアルを理解するには、以下の知識が必要です。