web-dev-qa-db-ja.com

MySQLのDATETIMEフィールドから日付のみを選択するにはどうすればよいですか?

MySQLデータベースにDATETIMEでセットアップされたテーブルがあります。私はこのテーブルでSELECTをDATEまでに必要とし、時間を除外します。

特定の列がSELECTに設定されている場合でも、日付と時刻をバイパスするだけでこのテーブルでDATETIMEを実行するにはどうすればよいですか?


現在は:2012-01-23 09:24:41

このためだけにSELECTを実行する必要があります:2012-01-23

97
DiegoP.

SELECT DATE(ColumnName) FROM tablename;

MySQL DATE()関数 の詳細。

137

date_formatを使用できます

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

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

または

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

14
user1061865

MYSQLには、 DATE_FORMAT(date、format) という関数があります。あなたの場合、選択ステートメントは次のようになります。

SELECT DATE_FORMAT(dateTimeFieldName,"%a%m%Y") as dateFieldName FROM table_name

MysqlのDATEおよびTIME関数の詳細については、 ここをクリック

10
Santosh D.

使用してみてください
今日のために:

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


選択した日付:

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

SELECT DATE(ColumnName)を実行しようとしましたが、TIMESTAMP列ではこれは機能しません それらはUTCで保存され、ローカル日付に変換する代わりにUTC日付が使用されるためです。タイムゾーンの特定の日付にある行を選択する必要があったので、 この他の質問への回答この質問に対するバラスワミーバデマンの回答 を組み合わせて、これが私ですした:

日付を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と同じであるため夏時間を使用しない場合です。

6
Mike

単にあなたができる

SELECT DATE(date_field) AS date_field FROM table_name
5
krish kim

あなたはこれを試すことができます:

SELECT CURDATE();

以下を確認する場合:

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

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

3
aymsoft

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

または、SELECT * FROM Profiles WHERE left(DateReg,10)=$date

乾杯

2
Richie

DATE_FORMATを使用

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

例:

select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;
1
Hendry Tanaka
Select * from table_name where date(datetime)
1
Gurpreet Dhanoa
SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(Rand() * 14) DAY,'%Y-%m-%d');

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

1
zaynomer

この答えを試してください。

SELECT * FROM `Yourtable` WHERE date(`dateField`) = '2018-09-25'
0

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

SELECT DATE(FROM_UNIXTIME(time)) from table 
0
Rosmin

この質問に実際に有効なソリューションを提供するために:

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

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

0
Mo'in Creemers