且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

PHP和MySQL:将月份和日期与动态年份进行比较

更新时间:2022-02-12 22:31:38

我不知道您的数据库表,但我想您可以这样:

I don't know your database tables, but I think you could do like this:


  1. 获取期间,iniDay,iniMonth,endDay, endMonth

  2. 您的表需要具有以下字段:ini_day,ini_month,ini_daymonth,end_day,end_month,end_daymonth,price_day

  3. 从表
    中选择*在iniDay> = booking_ini_day AND iniMonth> = booking_ini_month-获得初始期间
    和iniDay< = booking_end_day AND iniMonth< = booking_end_month
    UNION ALL
    从表
    中选择* WHERE iniDay< = booking_ini_day AND iniMonth< = booking_ini_month-获取中间期间
    AND endDay> = booking_end_day AND endMonth> = booking_end_month
    UNION ALL
    选择*从表

    endDay> = booking_ini_day AND endMonth> = booking_ini_month
    AND endDay< = booking_end_day AND endMonth< = booking_end_month-获取结束时间

  4. 计算结果查询中每个期间/行的天数并显示给用户。

  1. Get your period, iniDay, iniMonth, endDay, endMonth
  2. Your table need to have these fields: ini_day, ini_month, ini_daymonth, end_day, end_month, end_daymonth, price_day
  3. SELECT * from table WHERE iniDay >= booking_ini_day AND iniMonth >= booking_ini_month -- get initial period AND iniDay <= booking_end_day AND iniMonth <= booking_end_month UNION ALL SELECT * from table WHERE iniDay <= booking_ini_day AND iniMonth <= booking_ini_month -- get middle periods AND endDay >= booking_end_day AND endMonth >= booking_end_month UNION ALL SELECT * from table WHERE endDay >= booking_ini_day AND endMonth >= booking_ini_month AND endDay <= booking_end_day AND endMonth <= booking_end_month -- get end period
  4. Count days for each period/row in your result query and show to your user.

您将复制数据库信息,例如日,月和日月,但这是为了提高性能。

You will "duplicate" database information, like day, month and daymonth, but it's for better performance.