我有一个数据库表userinfo。在该userinfo表中有字段user_id,user_name,user_birth。
我的目标是让用户即将到来的生日,在我的情况下是6个下一个。我找到了相同类型的例子,但他们都使用了DATE-dbformat,这些例子对我不起作用,因为在我的表中user_birth值是unix timestamp-format。
如果某人有一个示例代码,我将不胜感激。
我试图摆脱的结果是(今天是23.06):
这将是23.06之后的下一个6岁生日,一年无所谓。
提前致谢。
答案 0 :(得分:1)
好吧,使用from_unixtimestamp()
以日期/时间格式获取它。所以,查询将是这样的:
select *
from t
order by (case when month(date(from_unixtimestamp(user_birth))) = month(now()) and
day(date(from_unixtimestamp(user_birth))) > day(now()) or
month(date(from_unixtimestamp(user_birth))) > month(now())
then 1 else 0
end) desc,
month(date(from_unixtimestamp(user_birth))),
day(date(from_unixtimestamp(user_birth)))
limit 6
order by
的第一部分首先放置年份中的后期日期。然后根据月份和日期排序日期。