我仍然遇到MySql xD问题。
我将在一年中的每一天都有一个price_table( MySql 与PhpMyAdmin一起)。所以我生成了365行表D:现在我在一个范围内做一些选择,如下所示:
SELECT * FROM `rprices` WHERE `date` BETWEEN '2022-02-01' AND '2022-02-30'
但现在我发现日期类型列还需要一年的值:D ...现在我需要做类似这样的查询(#2),我真的不喜欢创建365/364行的想法每年
#2) SELECT * FROM `rprices` WHERE `date` BETWEEN '02-01' AND '02-30'
这可能吗? 或者用月,日列创建和表更好?性能比较?
谢谢, 如果你问我将在2点GTM + 1
上网,我会尽快回复答案 0 :(得分:2)
您可以使用MONTH和DAY等日期功能剥离年份
如果你要从一个月的第一天到特定的一天,那么就这样做。
SELECT * FROM rprices
WHERE MONTH(date) = 2
AND DAY(date) <= 20
如果你想在不是开始和结束的那个月的两天之间进行测距,那么就这样做。
SELECT * FROM rprices
WHERE MONTH(date) = 2
AND (DAY(date) BETWEEN 5 AND 20)
最好将日期存储为实际日期类型,而不是将其存储在多个列中。 我建议您保留日期列,并在日期执行不同的功能..如果存在提高性能的问题,可以添加索引
正如评论中所述,您甚至不需要按日过滤,因为您包括整个月
SELECT * FROM rprices
WHERE MONTH(date) = 2
答案 1 :(得分:-1)
您可以使用下面提到的示例查询,并根据您的需要进行修改:
SELECT * FROM rprices WHERE MONTH(date) BETWEEN '2' AND '3'
AND DAY(date) BETWEEN '1' AND '31'