【问题标题】:Select value from moday this week on 18:00从本周星期一 18:00 选择值
【发布时间】:2018-06-25 20:01:11
【问题描述】:

我只在本周的星期一和 18:00 到 19:00 尝试从 MySQL 获取值。我该怎么做?

结果应该是:1

m_z_analytics

|id|m_type|date_added         |
|1 |test1 |2018-06-25 18:02:09|
|2 |test2 |2018-06-26 19:44:24|


SELECT COUNT(id) AS id FROM m_z_analytics WHERE
Week(date_added) = Week(CURRENT_TIMESTAMP) AND
date_added >= (NOW() - INTERVAL 7 DAY) AND
date_added < (NOW() - INTERVAL 6 HOUR)

【问题讨论】:

    标签: php mysql date time


    【解决方案1】:

    使用WEEKDAY()DAYNAME() 函数测试星期几,使用HOUR() 测试一天中的时间。

    SELECT COUNT(*)
    FROM m_z_analytics
    WHERE date_added BETWEEN NOW() - INTERVAL 1 WEEK AND NOW() - INTERVAL 6 HOUR
    AND HOUR(date_added) = 18
    AND DAYNAME(date_added) = 'Monday'
    

    您不需要WEEK() 函数,因为时间间隔缩小到当前一周。

    【讨论】:

    • 对我不起作用。整行看起来像这样:$dh_c_01_01 = $db-&gt;QueryFetchArray("SELECT COUNT(id) AS id FROM m_z_analytics WHERE date_added BETWEEN NOW() - INTERVAL 1 WEEK AND NOW() - INTERVAL 6 HOUR AND HOUR(date_added) BETWEEN 18 and 19 AND DAYNAME(date_added) = 'Monday'");(使用 php 5.6)
    • 是否要将第二行包括在计数中? 19:44 是在 19:00 之后。
    • PHP版本无关,这只是MySQL。
    • 不,只有这个,但我不知道为什么你的代码不起作用。
    • 这就是我使用HOUR(date_added) = 18而不是BETWEEN 18 AND 19的原因,因为后者将包含19:xx
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2012-11-27
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多