MySQL'de bir DATETIME alanından yalnızca tarih nasıl seçilir?


115

MySQL veritabanında ile kurulmuş bir tablom var DATETIME. Yapmam gerekSELECTBu tabloda yalnızca DATE tarihine kadar ve saati hariç tutmam .

SELECTBu tabloda, belirli bir sütun olarak ayarlanmış olsa bile yalnızca tarihe göre ve zamanı atlayarak nasıl yaparım DATETIME?


Misal

Şimdi: 2012-01-23 09:24:41

Bunun için SELECTsadece bir yapmam gerekiyor :2012-01-23


Yanıtlar:


165

SELECT DATE(ColumnName) FROM tablename;

MySQL DATE () işlevi hakkında daha fazla bilgi .


Bunu yapmaya çalışıyorum ama çalışmıyor $ query = "SELECT * FROM Profiles NEREDE tarih (DateReg = '". $ Tarih. "')";
DiegoP.

2
date (datereg) = 'dateHere'
Balaswamy Vaddeman

$ sorgu = "SEÇİN * Profillerden NEREDE tarih (DateReg) = '". $ tarih. "'"; Bu çalışmalı. Her iki tarihin de aynı biçimde olduğundan emin olun. $ Date 'where' yan tümcesini kullanmadan önce biçimlendirmezseniz.
Clain Dsilva

Bu konuda dikkatli olmanız gerektiğini düşünüyorum çünkü ColumnName'de bir dizin kullanmayacak
d0x

Sütun adının önüne ve arkasına Mezar vurgusu sembolünü eklemeyi unutmayın. Bazı MySql sürümlerinde güncel tarihi gösterebilir.
user2092317

40

date_format kullanabilirsiniz

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

saat dilimi için

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

Bu mükemmel çalışıyor çünkü artık sadece '% d' tarih biçimine sahip olarak belirli günlerdeki verileri seçebiliyorum.
mjwrazor

küçük "y" tablename'den DATE_FORMAT (tarih, '% Y-% m-% d') seçin yıl
dönmüyor

14

Kullanabilirsiniz select DATE(time) from appointment_details tarih için

veya

Sadece select TIME(time) from appointment_detailszaman için kullanabilirsin


13


Bugün için kullanmayı deneyin :

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


seçilen tarih için:

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

2020: Teşekkürler dostum!
MarcoZen


6

Basitçe Yapabilirsin

SELECT DATE(date_field) AS date_field FROM table_name

6

A yapmayı denedim SELECT DATE(ColumnName), ancak bu sütunlar için çalışmıyor çünkü bunlar UTC'de saklanıyor ve yerel tarihe dönüştürmek yerine UTC tarihi kullanılıyor. Öyle benim birleştirerek, benim saat diliminde belirli bir tarihte vardı satırları seçmek için gerekli bu diğer sorunun cevabı ile bu soruya Balaswamy Vaddeman cevabıTIMESTAMP , bu ne yaptım:

Tarihleri ​​olarak depoluyorsanız DATETIME

Sadece yap SELECT DATE(ColumnName)

Tarihleri ​​olarak depoluyorsanız TIMESTAMP

Henüz yapmadıysanız , saat dilimi verilerini MySQL'e yükleyin . Windows sunucuları için önceki bağlantıya bakın. Linux, FreeBSD, Solaris ve OS X sunucuları için şunları yaparsınız:

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

Ardından sorgunuzu şu şekilde biçimlendirin:

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

Bunu WHEREsorgunun şu şekilde bir kısmına da koyabilirsiniz (ancak bu sütundaki dizinlerin çalışmayacağını unutmayın):

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

(Açıkçası America/New_Yorkyerel saat diliminizin yerini alınız.)


Bunun tek istisnası, yerel saat diliminizin GMT olması ve yerel saatinizin UTC ile aynı olması nedeniyle yaz saati uygulaması yapmamanızdır.


3

SELECT * FROM Profiles WHERE date(DateReg)=$date$ Date'ın yyyy-aa-gg cinsinden nerede olduğunu deneyin

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

Şerefe


3

Bunu deneyebilirsiniz:

SELECT CURDATE();

Aşağıdakileri kontrol ederseniz:

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

Uzun zaman aldığını görebilirsiniz.



2

Lütfen bu cevabı deneyin.

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

1

kullanım DATE_FORMAT

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

misal:

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

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

Bu, 'yyyy-aa-gg' biçiminde tarih almak için kullanılabilir.


1

zaman sütunu zaman damgası üzerindeyse, bu sorguyu kullanarak o zaman damgasından tarih değerini alırsınız

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

Bu soruya gerçekten işe yarayan bir çözüm getirmek adına:

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

Açıkçası, NOW () işlevini istediğiniz herhangi bir tarih veya değişkenle değiştirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.