【问题标题】:subquery based on two date coloumn having one week range data基于具有一周范围数据的两个日期列的子查询
【发布时间】:2017-05-09 06:17:35
【问题描述】:

我在表格中有两个日期列,一个用于发布问题的日期,另一个用于回答。例如,每当提出新问题时,其日期存储在 q_date 列中,而每当有人回答该问题时,其日期存储在 a_date 列中。 现在我想要一周内提出的所有问题以及一周内回答的所有问题。 任何人都可以使用联接或子查询向我解释查询

【问题讨论】:

  • 到目前为止你有没有尝试过?您尝试过的一些 sql 查询没有成功!
  • 你能表现出一些努力吗?
  • 是的,这是我使用过的查询。 “SELECT DISTINCT (ans_id), q_ans.a_date FROM table q_ans WHERE q_ans.a_date BETWEEN date_sub(NOW(), INTERVAL 1 WEEK) AND q_ans.type = 'A' AND q_ans.live_question =1 AND q_ans.ans_id IN (SELECT q_ques .q_id FROM qa_posts q_ques WHERE q_ques.type = 'Q' ) order by q_ans.a_date DESC"。当我删除这个“q_ans.a_date BETWEEN date_sub(NOW(), INTERVAL 1 WEEK)”表单查询时,我得到了完美的结果。
  • 是的@Vandita 这是我使用过的查询。 “SELECT DISTINCT (ans_id), q_ans.a_date FROM table q_ans WHERE q_ans.a_date BETWEEN date_sub(NOW(), INTERVAL 1 WEEK) AND q_ans.type = 'A' AND q_ans.live_question =1 AND q_ans.ans_id IN (SELECT q_ques .q_id FROM qa_posts q_ques WHERE q_ques.type = 'Q' ) order by q_ans.a_date DESC"。当我删除这个“q_ans.a_date BETWEEN date_sub(NOW(), INTERVAL 1 WEEK)”表单查询时,我得到了完美的结果。
  • @TimBiegeleisen Biegeleisen 你能解释一下你想看到什么努力吗?我应该更多地解释我的问题吗?

标签: mysql join subquery


【解决方案1】:

您可以尝试以下查询:

SELECT *
FROM yourTable
WHERE
    q_date >= DATE(NOW()) - INTERVAL 7 DAY OR
    a_date >= DATE(NOW()) - INTERVAL 7 DAY

这将返回与过去 7 天发生的问题或答案相对应的所有记录。

【讨论】:

    【解决方案2】:

    您可以使用这样的查询:

     Select * from q_ans where DATEDIFF(WEEK,q_ans.q_date,q_ans.a_date) = 1
    

    这将给出答案日期在问题日期一周范围内的所有记录

    【讨论】:

    • DATEDIFF() 不接受三个参数。它只需要两个日期作为它的参数。
    【解决方案3】:

    您需要为 BETWEEN 子句添加 AND 条件。你可以试试

    WHERE q_ans.a_date BETWEEN date_sub( NOW(), INTERVAL 1 WEEK) AND NOW()
    

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多