Bagaimana cara memilih tanggal saja dari bidang DATETIME di MySQL?


115

Saya memiliki tabel di database MySQL yang sudah diatur DATETIME. Saya perlu masuk ke SELECTtabel ini hanya sebelum DATE dan tidak termasuk waktu.

Bagaimana saya SELECTdalam tabel ini hanya dengan tanggal dan melewati waktu, bahkan jika kolom tertentu diatur ke DATETIME?


Contoh

Sekarang: 2012-01-23 09:24:41

Saya perlu melakukan satu- SELECTsatunya untuk ini:2012-01-23


Jawaban:


165

SELECT DATE(ColumnName) FROM tablename;

Lebih lanjut tentang fungsi MySQL DATE () .


Saya mencoba melakukan ini tetapi tidak berhasil $ query = "SELECT * FROM Profiles WHERE date (DateReg = '". $ Date. "')";
DiegoP.

2
tanggal (datereg) = 'dateHere'
Balaswamy Vaddeman

$ query = "PILIH * DARI Profil DI MANA date (DateReg) = '". $ date. "'"; Ini seharusnya berhasil. Pastikan kedua tanggal memiliki format yang sama, Jika tidak format tanggal $ sebelum menggunakan klausa in 'where ".
Clain Dsilva

Saya pikir Anda perlu berhati-hati dengan itu karena tidak akan menggunakan indeks pada ColumnName
d0x

Jangan lupa menambahkan simbol aksen Kuburan `sebelum dan sesudah nama kolom. Di beberapa versi MySql, ini mungkin menunjukkan tanggal sekarang.
pengguna2092317

40

Anda dapat menggunakan date_format

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

untuk zona waktu

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

Ini berfungsi sempurna karena sekarang saya dapat memilih data dari hari-hari tertentu hanya dengan format tanggal '% d'.
mjwrazor

pilih DATE_FORMAT (tanggal, '% Y-% m-% d') dari tablename kecil "y" tidak mengembalikan tahun gunakan modal "Y" sebagai gantinya
Nirav Joshi

14

Anda dapat menggunakan select DATE(time) from appointment_detailsuntuk tanggal saja

atau

Anda dapat menggunakan select TIME(time) from appointment_detailswaktu saja


13

Coba gunakan
untuk hari ini:

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


untuk tanggal yang dipilih:

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

2020: Terima kasih sobat!
MarcoZen

10

Di MYSQL kami memiliki fungsi yang disebut DATE_FORMAT (tanggal, format) . Dalam kasus Anda, pernyataan pilihan Anda akan menjadi seperti ini: -

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

Untuk informasi lebih lanjut tentang fungsi TANGGAL dan WAKTU Mysql klik di sini.


6

Cukup Anda bisa lakukan

SELECT DATE(date_field) AS date_field FROM table_name

6

Saya mencoba melakukan SELECT DATE(ColumnName), namun ini tidak berfungsi untuk TIMESTAMPkolom karena disimpan dalam UTC dan tanggal UTC digunakan alih-alih mengonversi ke tanggal lokal. Saya perlu memilih baris yang berada pada tanggal tertentu di zona waktu saya, jadi menggabungkan jawaban saya untuk pertanyaan lain ini dengan jawaban Balaswamy Vaddeman untuk pertanyaan ini , inilah yang saya lakukan:

Jika Anda menyimpan tanggal sebagai DATETIME

Kerjakan saja SELECT DATE(ColumnName)

Jika Anda menyimpan tanggal sebagai TIMESTAMP

Muat data zona waktu ke MySQL jika Anda belum melakukannya. Untuk server Windows, lihat tautan sebelumnya. Untuk server Linux, FreeBSD, Solaris, dan OS X Anda akan melakukan:

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

Kemudian format kueri Anda seperti ini:

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

Anda juga dapat meletakkan ini di WHEREbagian kueri seperti ini (tetapi perhatikan bahwa indeks pada kolom itu tidak akan berfungsi):

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

(Jelas menggantikan America/New_Yorkzona waktu lokal Anda.)


Satu-satunya pengecualian untuk ini adalah jika zona waktu lokal Anda adalah GMT dan Anda tidak melakukan penghematan siang hari karena waktu lokal Anda sama dengan UTC.


3

Coba di SELECT * FROM Profiles WHERE date(DateReg)=$datemana $ date dalam tttt-bb-hh

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

Bersulang


3

Anda bisa mencoba ini:

SELECT CURDATE();

Jika Anda memeriksa yang berikut:

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

Anda dapat melihat bahwa itu membutuhkan waktu lama.




1

Menggunakan DATE_FORMAT

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

contoh:

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

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

Yang ini bisa digunakan untuk mendapatkan tanggal dalam format 'yyyy-mm-dd'.


1

jika kolom waktu ada di stempel waktu, Anda akan mendapatkan nilai tanggal dari stempel waktu tersebut menggunakan kueri ini

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

Untuk benar-benar memberikan solusi yang berfungsi untuk pertanyaan ini:

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

Jelas, Anda bisa mengubah fungsi NOW () ke tanggal atau variabel apa pun yang Anda inginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.