SQL获取给定日期下一次出现的日期戳

时间:2016-09-29 00:17:59

标签: php mysql sql

我有以下SQL查询:

SELECT
  *
FROM
  tbl_clubs c
  LEFT JOIN tbh_club_classes cc
    ON c.clubID = cc.clubID
  LEFT JOIN tbl_classes cl
    ON cl.classID = cc.classID

返回类似的数据

Array
(
[0] => Array
    (
        [clubID] => 
        [clubName] => Club 1
        [clubLocation] => Clyme Hall
        [clubPostcode] => 
        [classID] => 2
        [classType] => Kickboxing
        [classStart] => 17:00
        [classEnd] => 19:00
        [classNight] => Monday
        [classAudience] => Mixed
        [classCost] => 5.00
    )

[1] => Array
    (
        [clubID] => 1
        [clubName] => club 2
        [clubLocation] => Sports Hall
        [clubPostcode] => 
        [classID] => 3
        [classType] => Karate / Judo
        [classStart] => 19:30:00
        [classEnd] => 21:00:00
        [classNight] => Friday
        [classAudience] => Mixed
        [classCost] => 5.00
    )
)

我希望classNight返回工作日,月中的某一天以及classNight中存储的下一次出现的月份,以便从查询中得到类似的内容。

Array
(
[0] => Array
    (
        [clubID] => 
        [clubName] => Club 1
        [clubLocation] => Clyme Hall
        [clubPostcode] => 
        [classID] => 2
        [classType] => Kickboxing
        [classStart] => 17:00
        [classEnd] => 19:00
        [classNight] => **Mon 26th Oct**
        [classAudience] => Mixed
        [classCost] => 5.00
    )

[1] => Array
    (
        [clubID] => 1
        [clubName] => club 2
        [clubLocation] => Sports Hall
        [clubPostcode] => 
        [classID] => 3
        [classType] => Karate / Judo
        [classStart] => 19:30:00
        [classEnd] => 21:00:00
        [classNight] => **Fri 21st Oct**
        [classAudience] => Mixed
        [classCost] => 5.00
    )
)

我想修改我的查询以获得上面所需的结果。所以正在发生的是classNight字段,它是varcar格式,保存了课程所在的星期几,我希望它返回存储在classNight中的星期几,月中某天和第二天的月份

我用这段代码用php完成了它

$day = $row['classNight'];//ie Monday, Tuesday etc
$today = strtotime('today 00:00:00');
$date = strtotime($day."+1",$today);
$date1 = date("D d M",$date);

但我需要弄清楚如何在SQL查询中执行此操作。

修改

也许代替返回星期几和星期几的查询,它只返回classNight字段中存储的当天下一个实例的日期戳,然后我可以使用php将其显示在我需要的格式,对每个人来说都会更容易:)

我找到了这段代码但无法让它工作

SELECT * (NEXT_DAY(SYSDATE,`classNight`) "NEXT DAY") AS dates
 FROM tbl_classes;

我不确定这会给我时间戳,但是应该给我一天/一个月/一年;任何人都可以看到上述内容有什么问题以及我如何将其纳入我的查询?

2 个答案:

答案 0 :(得分:0)

db中日期列的数据类型是什么?如果是在DATETIME或DATE,您可以采取以下方法。使用PHP以与表相同的格式获取今天的日期。然后在查询条件中使用相同的内容,如

SELECT
  *
FROM
  tbl_clubs c
  LEFT JOIN tbh_club_classes cc
    ON c.clubID = cc.clubID
  LEFT JOIN tbl_classes cl
    ON cl.classID = cc.classID
WHERE DATE(tablename.datecolumn) > $ date_variable

这将从明天开始为您提供课程。记住一件事,在MySQL中,我们只能比较日期,而不是时间。我再次不知道您使用哪种格式来保存日期,因此它只会以与存储日期相同的方式显示。但是在得到结果后我们可以使用PHP格式化它。

答案 1 :(得分:0)

如果我理解正确,您希望找到一周中某一天的下一个日:

{{1}}