MySQLでDATETIMEからDATEとTIMEを分割する方法


84

DATETIMEフィールドをテーブルに格納してい ます。各値は次のようになります:2012-09-09065712

私はこの構文を使用しています:

   date("Y-m-d H:i:s");

今私の質問は、データをフェッチしているときに、単一のMySQLクエリを使用して、日付と時刻の両方を別々に取得するにはどうすればよいですか?

2012-09-09のような日付と06:57:12のような時間


おそらくあなたは探しているのDATE_FORMATではなくDATETIME時間を探している場合はデフォルトの日付を、日付を探している場合はデフォルトの時間を提供するので、以下の私の答えを参照してください。
ジョンウー

回答:


128

DATE_FORMAT()を使用してこれを実現できます他の形式についてはリンクをクリックしてください

SELECT DATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, 
       DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

SQLFiddleデモ


こんにちは、値を取得する方法は?? echo DATEONLY日付のecho TIMEONLY印刷と時刻の印刷に使用できますか?または何??
ミスロージー2012

@MissRosyはい、エイリアス(DATEONLYやTIMEONLYなど)を使用して、必要な値を取得できます。
ジョンウー


@MissRosyどういたしまして。一番いいのは、好きな形にフォーマットできることです。
ジョンウー

@ John..yes ..私はそのことを愛しています:)
ミスロージー

49

mysqlのドキュメントによると、DATE()関数は日時フィールドの日付部分をプルし、時間部分はTIME()をプルします。だから私は試してみます:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...

17

試してみてください:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`

これは取得することはありませんDATEし、TIME唯一のユーザーが求めているものとして。日付と時刻全体がデフォルトで表示されます。このリンクを売る
John Woo

1
それが生成されますSeptember, 09 2012 00:00:00-0400のためにDATEJanuary, 01 1970 03:20:38-0500するためにTIME
ジョン・ウー

4
クエリによると、mysqlでは2012-09-09をdate_partとして、06:57:12を時間部分として提供します
Sudhir Bastakoti 2012

@ Sudhir ..返信ありがとうDATE_FORMAT()ございます。これも正しいですが..使用すると、より柔軟になります。
ミスロージー2012

1
@MissRosyようこそ。そうです、最も適した、より柔軟なソリューションを使用する必要があります。:)
Sudhir Bastakoti 2012


-2

日付のみの使用
date("Y-m-d");

そして時間だけ使用する
date("H:i:s");


6
ねえ、SQLではなくphpのソリューションを提供します:)
maq 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.