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
SELECT DATE(ColumnName) FROM tablename;
Plus sur fonction MySQL DATE () .
vous pouvez utiliser date_format
select DATE_FORMAT(date,'%y-%m-%d') from tablename
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
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')
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:
DATETIME
Il suffit de faire SELECT DATE(ColumnName)
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.
Vous pouvez simplement faire
SELECT DATE(date_field) AS date_field FROM table_name
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é
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.
Utilisez DATE_FORMAT
select DATE_FORMAT(date,'%d') from tablename =>Date only
exemple:
select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;
Select * from table_name where date(datetime)
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".
S'il vous plaît essayez cette réponse.
SELECT * FROM `Yourtable` WHERE date(`dateField`) = '2018-09-25'
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
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.