0

我有一个数据库表用户信息。在该用户信息表中有字段 user_id、user_name、user_birth。

我的目标是获取用户即将到来的生日,在我的情况下是下一个 6 个。我找到了相同类型的示例,但它们都使用了 DATE-dbformat,这些示例对我不起作用,因为在我的表中,user_birth 值采用 unix 时间戳格式。

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

我试图得到的结果是这样的(今天是 23.06 时):

  • 27.06 迈克
  • 11.10 史蒂夫
  • 23.10 约翰
  • 25.12 戴夫
  • 07.01 安迪
  • 12.02 马克

那些将是 23.06 之后的下一个 6 个生日,年份应该无关紧要。

提前致谢。

4

1 回答 1

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较晚日期在第一年。然后日期按月份和月份排序。

于 2013-06-23T18:04:26.817 回答