【发布时间】:2019-12-20 10:34:36
【问题描述】:
我正在尝试根据 DOB 在 MySQL 中查找日期的下一个实例 - 例如,如果 DOB 是 1975-12-20 并且我们今天正在运行它,那么下一个生日是 2020-12-20。
同样,如果 DOB 是 1975-12-19,那么下一个生日是 2020-12-19,但如果 DOB 是 1975-12-21,那么下一个生日是 2019-12-21。
我可以在 PHP 中通过分解日期和替换年份来完成此操作,但我想尝试在 MySQL 中执行此操作,因为它运行起来会更快等
DOB 是一个日期字段 0000-00-00
我为 postgressql 找到了 How to calculate next birthday given a date of birth?,我认为它可以工作,但它使用了一个名为 age 的函数,它似乎在 MySQL 中不起作用
【问题讨论】:
-
什么是 DOB 类型?
-
这可以帮助您替换年龄函数:stackoverflow.com/a/19522129/4461980 然后它与您链接到的问题中的查询基本相同
-
如果DOB是
2000-02-29应该是什么结果? -
还要注意,在mysql中这样做不一定更快,你有基准测试吗?不要忘记,提高速度的几微秒可能不会超过您在后端执行此操作所获得的易于维护性所带来的好处
-
我怀疑它会更快。