› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
vinsony
V2EX  ›  MySQL

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

  •  
  •   vinsony · Jun 9, 2015 · 6496 views
    This topic created in 4172 days ago, the information mentioned may be changed or developed.
    已经有个DATE类型的生日字段了
    现在主要是跨年的时候,不能单纯只比较日期。
    有大神在吗?
    Supplement 1  ·  Jun 9, 2015
    实际上是这样,比如今天是2015-12-25,那么用户生日字段就是下面这种,分成了N个时间段
    2015-12-25至2016-01-03
    2014-12-25至2015-01-03
    2013-12-25至2014-01-03
    2012-12-25至2013-01-03
    ......

    sql不太擅长,大概就是这个意思。
    20 replies  •  2015-06-10 14:18:08 +08:00
    zwzmzd
    zwzmzd
    Jun 9, 2015
    1
    gamexg
    gamexg
    Jun 9, 2015 via Android
    2
    Date索引用不上吧?
    变成全表扫描了
    xuyl
    xuyl
    Jun 9, 2015
    3
    跨年也好办啊,转化为unix时间戳再比较呗。
    vinsony
    vinsony
    OP
    Jun 9, 2015
    4
    @zwzmzd 这个只能获取2个日期之间的吧,生日可是忽略年份只比较月日的哦。
    wd0g
    wd0g
    Jun 9, 2015
    5
    @vinsony 在建一个字段?
    hiboshi
    hiboshi
    Jun 9, 2015
    6
    format db 的 生日字段
    BETWEEN 或者 大于当前时间 并且 小于 当前时间+30天
    Paranoid
    Paranoid
    Jun 9, 2015
    7
    为啥用sql写?

    用程序计算出 过生日的日期,再查询。
    vinsony
    vinsony
    OP
    Jun 9, 2015
    8
    实际上是这样,比如今天是2015-12-25,那么要取的用户生日就是
    2015-12-25至2016-01-03
    2014-12-25至2015-01-03
    2013-12-25至2014-01-03
    ......
    vinsony
    vinsony
    OP
    Jun 9, 2015
    9
    @Paranoid 像你说的,这个怎么查呢?
    marvinwilliam
    marvinwilliam
    Jun 9, 2015
    10
    在条件里面使用to_date函数转换成月日的时间然后再和指定的月日比较?怎么感觉这个好不效率的说。。。
    Paranoid
    Paranoid
    Jun 9, 2015
    11
    @vinsony 我会冗余出一个字段 :P
    frankyzf
    frankyzf
    Jun 9, 2015
    12
    生成10天的月日列表如1215 1216 1217... 0103,用生日的月日in列表可以吗?
    levon
    levon
    Jun 9, 2015
    14
    把生日的年改成今年,比如出生日期是“1990-10-10”,那生日就是“2015-10-10",算2015-10-10是不是最近10天就可以了。
    levon
    levon
    Jun 9, 2015
    15
    补充一下,如果算出的今年生日是今年过掉的日子,那下一个生日的年就应该今年+1
    zoowii
    zoowii
    Jun 10, 2015
    16
    增加一个字段记录月日好了,这样直接=比较了
    free9fw
    free9fw
    Jun 10, 2015
    17
    写个方法嘛
    iyangyuan
    iyangyuan
    Jun 10, 2015 via iPhone
    18
    只能加冗余字段了,加一个月日字段。
    否则不走索引,效率太低。
    phx13ye
    phx13ye
    Jun 10, 2015
    19
    DAYOFYEAR() betweein
    jjplay
    jjplay
    Jun 10, 2015
    20
    http://segmentfault.com/q/1010000002869960
    Carbon 可能是 PHP 中时间处理最好的轮子了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1582 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.