检查日期是不是在 sql 中的日期范围之间(不检查年份)

Posted

技术标签:

【中文标题】检查日期是不是在 sql 中的日期范围之间(不检查年份)【英文标题】:check if dates are between date range in sql (check without year)检查日期是否在 sql 中的日期范围之间(不检查年份) 【发布时间】:2012-05-15 05:35:29 【问题描述】:

我正在开发一个度假指南网站! 我正在使用 mysql 数据库,其中存储有关酒店的信息。 我有 4 个日期字段来存储每个酒店工作的 2 个可能的季节(date_from、date_to、date_from_extra、date_to_extra)。我以如下格式存储日期:DD/MM,例如:25/12。

我正在尝试检查站点的第一个 datepicker 的 date1 和第二个 datepicker 的 date2 是否在数据库中的第一个范围(date_from、date_to)或第二个范围(date_from_extra、date_to_extra)之间。

问题是我不在数据库日期字段中使用年份,并且很难比较日期,尤其是当数据库中的第一季或第二季没有在年底完成但持续时间更长时,例如( 14/11 - 25/02)。

有什么帮助吗? 非常感谢!

【问题讨论】:

猜猜是时候开始在您的日期字段中添加年份了吗? :) 我认为您需要更改表格的列类型。除了没有将 Year 存储在您的数据库中之外,我还看到了另一个问题。您正在以 DD/MM 等格式存储日期。这样您将无法使用这些字段的索引。您应该以 MM/DD 格式存储。如果您以 MM/DD 格式存储,则可以编写直接比较语句,例如)where ($date > date_from and $date < date_to) or ($date > date_from_extra and $date < date_to_extra) 【参考方案1】:

试试这个

$todayDate = date("Y-m-d");
$check_date= strtotime($todayDate);

使用这个变量来检查

SELECT table_fiels FROM table_namE WHERE month(check_date)  BETWEEN month($your_db_start_date) AND  month($your_db_end_date) AND day(check_date)  BETWEEN day($your_db_start_date) AND  day($your_db_end_date)

【讨论】:

此代码无法工作,因为无法理解比较日期中是否有不同的年份。例如,如果酒店工作的季节是 14/11 - 25/02,则此代码将为我提供 25/02 至 14/11 的结果,而不是明年 14/11 至 25/02 的结果,这是正确的

以上是关于检查日期是不是在 sql 中的日期范围之间(不检查年份)的主要内容,如果未能解决你的问题,请参考以下文章

Java:检查当前日期是不是在特定日期范围内[重复]

检查当前日期是不是在两个日期之间 Oracle SQL

MySQL 检查日期范围是不是在日期范围内

如何检查日期范围选择器中的日期是不是更改?

ORACLE SQL - 如何检查时间是不是在特定范围内?

检查一个表中的日期是不是出现在 Access 中另一个表的范围内