【问题标题】:how to select with two date condition如何选择两个日期条件
【发布时间】:2015-04-19 13:24:09
【问题描述】:

我有一个从用户那里收到的日期“$user_input_date”,并且 我在 select 子句中的其他查询中有一个查询,我想在这个子查询中选择总小时数,其中两个条件如下所示

$sql="SELECT teacher.teacher_id,name,lname,father_name,salary_per_hour,monthly_salary,"
            . "(select ($user_month - month(salary_start_date)) from teacher where teacher_id=$id) as deff_month ,"
            . "(select ADDDATE(salary_start_date, interval deff_month month) from teacher where teacher_id=$id) as start_interval, "
            . "(select ADDDATE(start_interval, interval 1 month)) as end_interval ,"
            . " (select DATE_SUB(start_interval, interval 1 month)) as reverse_end_interval,"
            . "(**select sum(hours) from teacher_hours_late where date>= start_interval AND date<end_interval OR date>=start_interval AND date<reverse_end_interval and teacher_id=$id ) as total_late**"
            . " from teacher where teacher.branch_id=$branch_id and teacher.teacher_id=$id"

我的目标是在我从用户那里收到的日期之前达到日期间隔的总小时数,如果 start_interval>$user_input_date 那么我想选择 start_interval 和 end_interval 之间的间隔,否则选择 strong>start_interval 和 reverce_end_interval 在下面的 where 子句中查询我在 where 子句中的条件是错误的,因为我不知道请帮助我亲爱的select sum(hours) from teacher_hours_late where date&gt;= start_interval AND date&lt;end_interval OR date&gt;=start_interval AND date&lt;reverse_end_interval and teacher_id=$id ) as total_late

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    需要括号来隔离日期之间的条件。

    之前

    where date>= start_interval AND date<end_interval OR date>=start_interval AND date<reverse_end_interval
    

    之后

    where (date>= start_interval AND date<end_interval) OR (date>=start_interval AND date<reverse_end_interval)
    

    【讨论】:

    • 括号不是我的问题,亲爱的 WorkSmarter,如果用户日期大于开始间隔,我不知道如何通过 $user_input 日期创建条件,那么我想总结日期之间的小时数>start_interval AND date=start_interval AND date 之间的总和
    • 如果不使用括号,日期条件将无法按预期运行。将评估总共 3 个条件,而不是比较两个日期条件,例如date>= start_interval AND date=start_interval.
    • 你是对的,亲爱的,我在括号上遇到了这个问题,我修复了它,但我想使用 $user_input_date 来检查 $user_input_date 是否大于 start_interval 然后我想总结日期之间的小时数>start_interval AND date=start_interval AND date
    猜你喜欢
    • 2017-03-07
    • 2021-09-11
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2014-04-11
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多