Wie wähle ich in MySQL nur das Datum aus einem DATETIME-Feld aus?


115

Ich habe eine Tabelle in der MySQL-Datenbank, die mit eingerichtet ist DATETIME. Ich muss SELECTin dieser Tabelle nur bis DATUM und ohne die Zeit.

Wie kann ich SELECTin dieser Tabelle nur das Datum und die Zeit umgehen, selbst wenn diese bestimmte Spalte auf gesetzt ist DATETIME?


Beispiel

Jetzt ist es: 2012-01-23 09:24:41

Ich muss SELECTnur dafür etwas tun :2012-01-23


Mögliches Duplikat des MySQL-Datumsvergleichs
Marcus Adams

Antworten:


165

SELECT DATE(ColumnName) FROM tablename;

Mehr zur MySQL DATE () Funktion .


Ich versuche dies zu tun, aber es funktioniert nicht $ query = "SELECT * FROM Profiles WHERE Datum (DateReg = '". $ Date. "')";
DiegoP.

2
date (datereg) = 'dateHere'
Balaswamy Vaddeman

$ query = "SELECT * FROM Profiles WHERE Datum (DateReg) = '". $ Datum. "'"; Das sollte funktionieren. Stellen Sie sicher, dass beide Daten dasselbe Format haben. Wenn nicht, formatieren Sie das $ -Datum, bevor Sie es in der '
where'-

Ich denke, Sie müssen vorsichtig damit sein, weil es keinen Index für den ColumnName verwenden wird
d0x

Vergessen Sie nicht, das Grave-Akzent-Symbol vor und nach dem Spaltennamen einzufügen. In einigen MySQL-Versionen wird möglicherweise das aktuelle Datum angezeigt.
user2092317

40

Sie können date_format verwenden

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

für die Zeitzone

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

Dies funktioniert perfekt, da ich jetzt Daten von bestimmten Tagen auswählen kann, indem ich nur das Datumsformat '% d' habe.
mjwrazor

wählen DATE_FORMAT (Datum, '% Y-% m-% d') von Tabellennamen small "y" year Verwendung Kapital "Y" nicht statt Rückkehr
Nirav Joshi

14

Sie können select DATE(time) from appointment_detailsnur für Datum verwenden

oder

Sie können select TIME(time) from appointment_detailsnur für die Zeit verwenden


13

Versuchen Sie
für heute zu verwenden:

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


für ausgewähltes Datum:

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

2020: Danke Kumpel!
MarcoZen

10

In MYSQL haben wir die Funktion DATE_FORMAT (Datum, Format) . In Ihrem Fall wird Ihre select-Anweisung folgendermaßen aussehen: -

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

Weitere Informationen zu den MySQL-Funktionen DATE und TIME finden Sie hier.


6

Einfach können Sie tun

SELECT DATE(date_field) AS date_field FROM table_name

6

Ich habe versucht, a auszuführen SELECT DATE(ColumnName), dies funktioniert jedoch nicht für TIMESTAMPSpalten †, da diese in UTC gespeichert sind und das UTC-Datum verwendet wird, anstatt in das lokale Datum zu konvertieren. Ich musste Zeilen auswählen, die sich an einem bestimmten Datum in meiner Zeitzone befanden. Um meine Antwort auf diese andere Frage mit der Antwort von Balaswamy Vaddeman auf diese Frage zu kombinieren, habe ich Folgendes getan:

Wenn Sie Daten als speichern DATETIME

Mach einfach SELECT DATE(ColumnName)

Wenn Sie Daten als speichern TIMESTAMP

Laden Sie die Zeitzonendaten in MySQL, falls Sie dies noch nicht getan haben. Für Windows-Server siehe den vorherigen Link. Für Linux-, FreeBSD-, Solaris- und OS X-Server würden Sie Folgendes tun:

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

Formatieren Sie dann Ihre Abfrage wie folgt:

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

Sie können dies auch in den WHERETeil der Abfrage wie folgt einfügen (beachten Sie jedoch, dass Indizes für diese Spalte nicht funktionieren):

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

(Ersetzen America/New_YorkSie offensichtlich Ihre lokale Zeitzone.)


Die einzige Ausnahme ist, wenn Ihre lokale Zeitzone GMT ist und Sie keine Sommerzeit machen, da Ihre Ortszeit mit UTC übereinstimmt.


3

Versuchen SELECT * FROM Profiles WHERE date(DateReg)=$date wo $ date in JJJJ-MM-TT ist

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

Prost


3

Sie können dies versuchen:

SELECT CURDATE();

Wenn Sie Folgendes überprüfen:

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

Sie können sehen, dass es lange dauert.



2

Bitte versuchen Sie diese Antwort.

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

1

Verwenden DATE_FORMAT

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

Beispiel:

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

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

Dieser kann verwendet werden, um das Datum im Format 'JJJJ-MM-TT' abzurufen.


1

Wenn sich die Zeitspalte im Zeitstempel befindet, erhalten Sie mit dieser Abfrage einen Datumswert aus diesem Zeitstempel

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

Im Interesse einer funktionierenden Lösung für diese Frage:

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

Natürlich können Sie die Funktion NOW () in ein beliebiges Datum oder eine beliebige Variable ändern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.