2013-07-02 56 views
2

我似乎缺少一些基本的東西。我是一個來自古老的深奧法國數據庫系統(4D)的新難民,我是mySQL的新成員。瞭解MySql中的日期

鑑於以下DB:

CREATE TABLE `stuff` (
    `ID` INT NOT NULL AUTO_INCREMENT , 
    `Product` VARCHAR(45) NULL , 
    `Sell_by` DATE NULL , 
    PRIMARY KEY (`ID`)); 


INSERT INTO `Stuff` (`Product`, `Sell_by`) VALUES ('Milk', '2013-05-16'); 
INSERT INTO `Stuff` (`Product`, `Sell_by`) VALUES ('Cheese', '2013-06-15'); 
INSERT INTO `Stuff` (`Product`, `Sell_by`) VALUES ('Yogurt', '2013-07-02'); 
INSERT INTO `Stuff` (`Product`, `Sell_by`) VALUES ('Bread', '2013-08-17'); 
INSERT INTO `Stuff` (`Product`, `Sell_by`) VALUES ('Twinkies', '2099-04-16'); 

http://sqlfiddle.com/#!2/3ef48e/1

爲什麼沒有這回奶奶酪和酸奶?它什麼都不返回。

SELECT * FROM Stuff Where Sell_by <= 2013-07-04; 

但是這會返回一切嗎?

SELECT * FROM Stuff Where Sell_by >= 2013-07-04; 

回答

7

您的查詢實際上並未檢查日期,而是檢查數值表達式(2013 - 7 - 4)。

把日期表達式放在單引號('2013-07-14')中,你應該沒問題。

+0

哦。有趣。在數學函數中。我應該早點離開這個古老的數據庫系統。謝謝。 – JVMX

5

我想你是缺少報價;試試這個:

SELECT * FROM Stuff Where Sell_by <= '2013-07-04'; 
3

使用引號日期,如:

SELECT * FROM Stuff Where Sell_by <= '2013-07-04';