MYSQL从数据库中获取即将到来的生日(unix时间戳)

时间:2013-06-23 17:41:46

标签: mysql unix-timestamp date-of-birth

我有一个数据库表userinfo。在该userinfo表中有字段user_id,user_name,user_birth。

我的目标是让用户即将到来的生日,在我的情况下是6个下一个。我找到了相同类型的例子,但他们都使用了DATE-dbformat,这些例子对我不起作用,因为在我的表中user_birth值是unix timestamp-format。

如果某人有一个示例代码,我将不胜感激。

我试图摆脱的结果是(今天是23.06):

  • 27.06 Mike
  • 11.10 Steve
  • 23.10 John
  • 25.12戴夫
  • 07.01 Andy
  • 12.02 Mark

这将是23.06之后的下一个6岁生日,一年无所谓。

提前致谢。

1 个答案:

答案 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的第一部分首先放置年份中的后期日期。然后根据月份和日期排序日期。