web-dev-qa-db-fra.com

Comment sélectionner uniquement la date d'un champ date/heure dans MySQL

J'ai une table dans la base de données mySQL qui est configurée avec datetime.

J'ai besoin de SELECT dans ce tableau uniquement par DATE et en excluant l'heure.

Comment puis-je SELECT dans cette table uniquement en date et en ignorant l'heure, même si cette colonne spécifique est définie sur datetime?

Exemple:

Maintenant c'est: 2012-01-23 09:24:41

Je dois faire une SELECT uniquement pour ce 2012-01-23

92
DiegoP.

SELECT DATE(ColumnName) FROM tablename;

Plus sur fonction MySQL DATE () .

137
Balaswamy Vaddeman

vous pouvez utiliser date_format

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

Vous pouvez utiliser select DATE(time) from appointment_details pour la date uniquement 

ou

Vous pouvez utiliser select TIME(time) from appointment_details pour le temps seulement

14
user1061865

Essayez d'utiliser
pour aujourd'hui:

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


.__ pour la date sélectionnée:

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

J'ai essayé de faire un SELECT DATE(ColumnName), cependant ceci ne fonctionne pas pour les colonnes TIMESTAMP car ils sont stockés en UTC et que la date UTC est utilisée au lieu de la convertir en date locale. Je devais sélectionner des lignes qui se trouvaient à une date précise dans mon fuseau horaire. Ainsi, en combinant mon réponse à cette autre question avec la réponse de Balaswamy Vaddeman à cette question , voici ce que j'ai fait:

Si vous stockez des dates sous la forme DATETIME

Il suffit de faire SELECT DATE(ColumnName)

Si vous stockez des dates sous la forme TIMESTAMP

Chargez les données de fuseau horaire dans MySQL si vous ne l'avez pas déjà fait. Pour les serveurs Windows, voir le lien précédent. Pour les serveurs Linux, FreeBSD, Solaris et OS X, vous feriez:

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

Puis formatez votre requête comme ceci:

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

Vous pouvez également placer ceci dans la partie WHERE de la requête comme ceci (mais notez que les index sur cette colonne ne fonctionneront pas):

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

(Évidemment, remplacez America/New_York par votre fuseau horaire local.)


La seule exception à cette règle est si votre fuseau horaire local est GMT et que vous ne faites pas l'heure avancée car votre heure locale est identique à l'heure UTC.

6
Mike

Vous pouvez simplement faire 

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

Essayez SELECT * FROM Profiles WHERE date(DateReg)=$date où $ date est dans aaaa-mm-jj

Alternativement SELECT * FROM Profiles WHERE left(DateReg,10)=$date

À votre santé

2
Richie

Vous pouvez essayer ceci: 

SELECT CURDATE();

Si vous vérifiez les points suivants: 

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

Vous pouvez voir que cela prend beaucoup de temps. 

2
aymsoft

Utilisez DATE_FORMAT

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

exemple:

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');

Celui-ci peut être utilisé pour obtenir la date au format "aaaa-mm-jj".

1
zaynomer

S'il vous plaît essayez cette réponse.

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

si la colonne time est sur l'horodatage, vous obtiendrez la valeur de date de cet horodatage en utilisant cette requête 

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

Dans l'intérêt de mettre réellement une solution de travail à cette question:

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

De toute évidence, vous pouvez modifier la fonction NOW () en fonction de la date ou de la variable souhaitée.

0
Mo'in Creemers