我在数据库中有一个包含列
的表d_monday, d_tuesday, d_wednesday, d_thursday, d_friday, d_saturday, d_sunday
这些值的值为0或星期一,星期二,星期三,星期四等,具体取决于当天。
在我的选择语句中我正在使用
SELECT * from DEALS WHERE d_monday=DAYNAME(NOW()) OR d_tuesday=DAYNAME(NOW())
查明日期名称是否与今天匹配,如果是,则返回结果,否则不会显示任何内容。
由于某种原因,当我没有为特定日期设置任何值时,它会返回结果。
知道可能是什么问题吗?
答案 0 :(得分:0)
我很想用PHP字符串选择字段
$day = "d_". date('l'); //lowercase L is full day name
$SQL = "SELECT $day FROM DEALS WHERE [...]";
我猜了一下,但这不会让你朝着正确的方向前进吗?
或类似的东西
$day = date('l'); //lowercase L is full day name
$SQL = "SELECT * from DEALS WHERE d_monday='$day' OR d_tuesday='$day' ";
在我看来,你可能想要
$day = date('l'); //lowercase L is full day name
$SQL = "SELECT * from DEALS WHERE d_$day='$day'";
这种格式看起来有些混乱,或者我只是得到了错误的结局。
希望有所帮助。
答案 1 :(得分:0)
考虑删除一周中的七列,并添加一个单独的表DealDays
,其中外键引用Deals
:
CREATE TABLE DealDays (
DealDayID int NOT NULL,
DealID int NOT NULL,
DayName varchar(10) NOT NULL, /* or, perhaps, enum ('Sunday', 'Monday', …) */
PRIMARY KEY (DealDayID),
FOREIGN KEY (DealID) REFERENCING Dels (DealID), /* or whatever is Deal PK's name */
UNIQUE (DealID, DayName) /* to make sure you can't add the same day twice per deal */
);
然后你就可以找到今天的交易:
SELECT
d.DealID,
d.whatever,
…
FROM Deals d
INNER JOIN DealDays dd ON d.DealID = dd.DealID
WHERE dd.DayName = DAYNAME(NOW())
答案 2 :(得分:0)
您的查询运行正常。可能有问题的是您的数据类型列请检查。
我的建议是,为此目的,您只能使用一列,以便优化数据库。