MySQLのDATETIMEフィールドから日付のみを選択する方法は?


115

MySQLデータベースにで設定されたテーブルがありますDATETIMESELECTこの表は、日付を除いて、時間を除いてのみ必要です。

SELECT特定の列がに設定されている場合でも、日付のみで時間をバイパスして、このテーブルでどのようにすればよいDATETIMEですか?


今それは: 2012-01-23 09:24:41

SELECTはこれだけをする必要があります:2012-01-23


回答:


165

SELECT DATE(ColumnName) FROM tablename;

もっと上のMySQLのDATE()関数


これを実行しようとしていますが、機能しません$ query = "SELECT * FROM Profiles WHERE date(DateReg = '"。$ date。 "')";
DiegoP。

2
date(datereg)= 'dateHere'
Balaswamy Vaddeman

$ query = "SELECT * FROMプロファイルWHERE date(DateReg)= '"。$ date。 "'"; これはうまくいくはずです。両方の日付が同じ形式であることを確認してください。そうでない場合は、「where」句で使用する前に$ dateの形式を設定してください
Clain Dsilva

ColumnNameのインデックスを使用しないため、注意する必要があると思います
d0x

列名の前後に「アクセント記号」を追加することを忘れないでください。MySqlのバージョンによっては、現在の日付が表示される場合があります。
user2092317

40

あなたはdate_formatを使うことができます

select DATE_FORMAT(date,'%y-%m-%d') from tablename

タイムゾーン

sql2 = "SELECT DATE_FORMAT(CONVERT_TZ(CURDATE(),'US/Central','Asia/Karachi'),'%Y-%m-%d');"

日付形式 '%d'を指定するだけで特定の日のデータを選択できるので、これは完璧に機能します。
mjwrazor

テーブル名からDATE_FORMAT(date、 '%Y-%m-%d')を選択します。小さい「y」は年を返しません。代わりに大文字の「Y」を使用してください
Nirav Joshi

14

select DATE(time) from appointment_details日付のみ使用できます

または

select TIME(time) from appointment_details時間のみ使用できます


13


今日使用してみてください

SELECT * FROM `tbl_name` where DATE(column_name) = CURDATE()


選択した日付:

SELECT * FROM `tbl_name` where DATE(column_name) = DATE('2016-01-14')

2020:ありがとうバディ!
MarcoZen



6

を試してみましたがSELECT DATE(ColumnName)、列に対しては機能しませんそれらはUTCに保存され、ローカル日付に変換する代わりにUTC日付が使用されるためです。私は私の組み合わせ、私の時間帯に特定の日にあった行を選択するために必要なこの他の質問への答えをして、この質問に対するBalaswamy Vaddemanの答えは、これは私がやったことです:TIMESTAMP

として日付を保存している場合 DATETIME

するだけ SELECT DATE(ColumnName)

として日付を保存している場合 TIMESTAMP

タイムゾーンデータをまだロードしていない場合は、MySQLにロードします。Windowsサーバーについては、前のリンクを参照してください。Linux、FreeBSD、Solaris、OS Xサーバーの場合:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

次に、クエリを次のようにフォーマットします。

SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))

これを次のWHEREようにクエリの一部に含めることもできます(ただし、その列のインデックスは機能しないことに注意してください)。

SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'

(明らかAmerica/New_Yorkに、ローカルタイムゾーンの代わりに使用します。)


これの唯一の例外は、ローカルタイムゾーンがGMTであり、ローカル時間がUTCと同じであるために夏時間を適用しない場合です。


3

SELECT * FROM Profiles WHERE date(DateReg)=$date$ dateがyyyy-mm-ddである場所を試してください

あるいは SELECT * FROM Profiles WHERE left(DateReg,10)=$date

乾杯


3

これを試すことができます:

SELECT CURDATE();

以下を確認した場合:

SELECT NOW(); SELECT DATE(NOW()); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');

時間がかかることがわかります。




1

使用する DATE_FORMAT

select DATE_FORMAT(date,'%d') from tablename =>Date only

例:

select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;

1
SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(RAND() * 14) DAY,'%Y-%m-%d');

これは 'yyyy-mm-dd'形式で日付を取得するために使用できます。


1

時間列がtimestampにある場合、このクエリを使用してそのタイムスタンプから日付値を取得します

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

この質問に実際に役立つ解決策を実際に置くために:

SELECT ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));

明らかに、NOW()関数を任意の日付または変数に変更できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.