- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要提取生日在给定日期范围内的所有成员。无论年份如何。这意味着,当我需要从 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 日的数据),则不提供任何记录,无论其年份如何......
我有一个解决方法,其中
但想知道这是否是唯一可能的方法,或者我是否可以用一个 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/
我一直在尝试通过一些我为自己开发的练习题重新认识 SQL,但正在努力寻找更好的方法来解决以下问题: 播放列表 id title 1 Title1 2 Title2 播放列表剪辑 id pl
我有一个很大的制表符分隔文件,如下所示: chr1 9507728 9517729 0 chr1 9507728 9517729 5S_rRNA chr1 9537731 954
我经常想编辑提交消息,而不必从上次提交中重新选择文件集。 git commit file1.c file2.c 提交消息中的意外拼写错误。 git commit file1.c file2.c --a
如何编辑或改写 merge 提交的消息? git commit --amend 如果它是最后一次提交 (HEAD) 则可以工作,但是如果它在 HEAD 之前呢? git rebase -i HEAD~
我在 flutter 中有以下声明。 weight是来自 _weightController 的文本,即 _weightController.text int.parse(weight).toStri
我是一名优秀的程序员,十分优秀!