取最近 10 天内要过生日的用户, sql 该怎么写?

2015 年 6 月 9 日
 vinsony
已经有个DATE类型的生日字段了
现在主要是跨年的时候,不能单纯只比较日期。
有大神在吗?
5955 次点击
所在节点    MySQL
20 条回复
zwzmzd
2015 年 6 月 9 日
gamexg
2015 年 6 月 9 日
Date索引用不上吧?
变成全表扫描了
xuyl
2015 年 6 月 9 日
跨年也好办啊,转化为unix时间戳再比较呗。
vinsony
2015 年 6 月 9 日
@zwzmzd 这个只能获取2个日期之间的吧,生日可是忽略年份只比较月日的哦。
wd0g
2015 年 6 月 9 日
@vinsony 在建一个字段?
hiboshi
2015 年 6 月 9 日
format db 的 生日字段
BETWEEN 或者 大于当前时间 并且 小于 当前时间+30天
Paranoid
2015 年 6 月 9 日
为啥用sql写?

用程序计算出 过生日的日期,再查询。
vinsony
2015 年 6 月 9 日
实际上是这样,比如今天是2015-12-25,那么要取的用户生日就是
2015-12-25至2016-01-03
2014-12-25至2015-01-03
2013-12-25至2014-01-03
......
vinsony
2015 年 6 月 9 日
@Paranoid 像你说的,这个怎么查呢?
marvinwilliam
2015 年 6 月 9 日
在条件里面使用to_date函数转换成月日的时间然后再和指定的月日比较?怎么感觉这个好不效率的说。。。
Paranoid
2015 年 6 月 9 日
@vinsony 我会冗余出一个字段 :P
frankyzf
2015 年 6 月 9 日
生成10天的月日列表如1215 1216 1217... 0103,用生日的月日in列表可以吗?
frittle
2015 年 6 月 9 日
levon
2015 年 6 月 9 日
把生日的年改成今年,比如出生日期是“1990-10-10”,那生日就是“2015-10-10",算2015-10-10是不是最近10天就可以了。
levon
2015 年 6 月 9 日
补充一下,如果算出的今年生日是今年过掉的日子,那下一个生日的年就应该今年+1
zoowii
2015 年 6 月 10 日
增加一个字段记录月日好了,这样直接=比较了
free9fw
2015 年 6 月 10 日
写个方法嘛
iyangyuan
2015 年 6 月 10 日
只能加冗余字段了,加一个月日字段。
否则不走索引,效率太低。
phx13ye
2015 年 6 月 10 日
DAYOFYEAR() betweein
jjplay
2015 年 6 月 10 日
http://segmentfault.com/q/1010000002869960
Carbon 可能是 PHP 中时间处理最好的轮子了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/197334

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX