我似乎缺少一些基本的东西。我是一个来自旧的深奥的法国数据库系统(4D)的新难民,我是mySQL的新手。
给出以下数据库:
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;
答案 0 :(得分:7)
您的查询实际上并未检查日期,而是检查数字表达式(2013 - 7 - 4)。
将日期表达式放在单引号中(&#39; 2013-07-14&#39;),你应该没问题。
答案 1 :(得分:5)
我认为你缺少引号;试试这个:
SELECT * FROM Stuff Where Sell_by <= '2013-07-04';
答案 2 :(得分:3)
在日期周围使用引号,如:
SELECT * FROM Stuff Where Sell_by <= '2013-07-04';