จะใช้ตัวดำเนินการมากกว่ากับวันที่ได้อย่างไร?


106

ไม่รู้ว่าเกิดอะไรขึ้นที่นี่ นี่คือข้อความค้นหาจาก phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

แต่ฉันมักจะได้รับระเบียนทั้งหมดในตารางคืนรวมถึงระเบียนที่มีวันที่เริ่มต้น 2012-11-01 ด้วย สิ่งที่ช่วยให้?


1
คอลัมน์ start_date ของคุณเป็นประเภทวันที่หรือเวลาประทับหรือไม่
Shamis Shukoor

คำตอบ:


192

คุณได้ใส่เครื่องหมายstart_dateคำพูดเดี่ยวทำให้กลายเป็นสตริงให้ใช้backtickแทน

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

1
จะเกิดอะไรขึ้นถ้าการประทับเวลา
ichimaru

มีข้อสังเกตว่า MySQL ดูเหมือนจู้จี้จุกจิกเล็กน้อยเกี่ยวกับรูปแบบวันที่ ในขณะที่ทั้ง 2019/02/08 21:04:07 หรือ 2019-02-08 21:04:07 ให้ผลลัพธ์ที่คาดหวัง 02-08-2019 21:04:07 โดยใช้รูปแบบวันที่ในสหรัฐอเมริกาจะเหวี่ยงแหได้กว้างกว่ามาก .
David

22

ในคำสั่งของคุณคุณกำลังเปรียบเทียบสตริงที่เรียกว่าstart_dateกับเวลา
ถ้าstart_dateเป็นคอลัมน์ก็ควรจะเป็น

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(ไม่มีเครื่องหมายวรรคตอน) หรือ


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(พร้อมแบ็คทิค)

หวังว่านี่จะช่วยได้



2

ในกรณีของฉันคอลัมน์ของฉันเป็นวันที่และเวลาที่ให้บันทึกทั้งหมดแก่ฉัน สิ่งที่ฉันทำคือการรวมเวลาดูตัวอย่างด้านล่าง

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.