gpt4 book ai didi

php - 改写sql查询

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:44 27 4
gpt4 key购买 nike

我需要提取生日在给定日期范围内的所有成员。无论年份如何。这意味着,当我需要从 1 月 1 日到 1 月 30 日时,它应该提取所有在 1 月生日的成员。我发现这个查询很方便..

$sql = "SELECT * FROM family_member WHERE DATE_FORMAT(wedding_date, '%c-%d') BETWEEN 
DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d') AND DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d') order by MONTH(wedding_date), DAYOFMONTH(wedding_date)";

如果 from month 小于 to month,则此查询运行良好。这意味着如果查询是从 jan 拉到 feb,将产生所需的结果。但是如果我需要从 12 月 1 日到 1 月 30 日(我需要从 12 月 1 日到 12 月 31 日和 1 月 1 日到 1 月 31 日的数据),则不提供任何记录,无论其年份如何......

我有一个解决方法,其中

  1. 我需要将其分成两个查询
  2. 执行这些查询中的每一个
  3. 将结果合并,然后回显

但想知道这是否是唯一可能的方法,或者我是否可以用一个 SQL 查询来替换它...

最佳答案

您可以在 WHERE 子句中使用 AND 和 OR 轻松完成此操作:

SELECT * 
FROM family_member
WHERE
(DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d') < DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d')
AND
DATE_FORMAT(wedding_date, '%c-%d') BETWEEN
DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d') AND DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d')
)
OR
(DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d') > DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d')
AND
DATE_FORMAT(wedding_date, '%c-%d') BETWEEN
DATE_FORMAT('2013-".$to_month."-".$to_day."', '%c-%d') AND DATE_FORMAT('2013-".$from_month."-".$from_day."', '%c-%d')
)
ORDER BY MONTH(wedding_date), DAYOFMONTH(wedding_date)

关于php - 改写sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978859/

27 4 0
文章推荐: android - GridView 上的动画在滚动时变得困惑
文章推荐: python - BeautifulSoup 3.1 解析器太容易崩溃了
文章推荐: android - 在 strings.xml 中定义的文本中的 SpannableString
文章推荐: html - 将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com