SQL选择' date'类型列,如何忽略年份?

时间:2014-09-13 20:27:21

标签: mysql sql

我仍然遇到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

上网,我会尽快回复

2 个答案:

答案 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'