这是一个食品服务系统...
我有一张名为 detalle_regimen_paciente 的表,它存储饮食,周一至周日提供早餐(周一为 1,周日为 7,智利类型)
也有特定的服务时间。

+---+---------+-----------+--------------+---+
|id | name    |hora_carga |hora_servicio |day|
+---+---------+-----------+--------------+---+
|1  |breakfast|08:00      |09:00         |1  |
+---+---------+-----------+--------------+---+
|2  |lunch    |10:00      |13:00         |1  |
+---+---------+-----------+--------------+---+
|3  |breakfast|08:00      |09:00         |2  |
+---+---------+-----------+--------------+---+
|2  |lunch    |10:00      |13:00         |2  |
+---+---------+-----------+--------------+---+

所以我在查询中挣扎了大约两天(数据库中的比这更多......一些 n:m 关系是这是一个消费表,我可以从中获得一名员工的总消费量),我发现问题是我无法找到一种方法来使用当前日期和当前时间仅选择星期一 08:00(记录 ID #1)的膳食...

因此,在星期一的 07:58,它应该只返回 ID 为 1 的记录,因为这是下一顿要供应的饭菜,也是为员工收取的下一顿饭。
+---+---------+-------------+---+
|1  |breakfast|08:00        |1  |
+---+---------+-------------+---+

这是到目前为止的sql,但它似乎只是过滤了一天......
select detalle_regimen_paciente.hora_carga
from
detalle_regimen_paciente
where
detalle_regimen_paciente.hora_servicio > CURTIME() AND
detalle_regimen_paciente.hora_carga > CURTIME()
AND
detalle_regimen_paciente.dia = (select DAYOFWEEK(CURDATE())-1)

也许我只是问错了或误用了时间函数。

请在这里帮忙。

提前谢谢。

最佳答案

SELECT
    *                          --- select the columns you need (hora_carga ?)
FROM
  ( SELECT *
    FROM detalle_regimen_paciente
    WHERE  hora_servicio > CURTIME()
         AND
           dia = DAYOFWEEK(CURDATE())-1
       OR
         dia > DAYOFWEEK(CURDATE())-1
    ORDER BY dia, hora_servicio
      LIMIT 1
  ) AS a
UNION ALL
SELECT *
FROM
  ( SELECT *
    FROM detalle_regimen_paciente
    ORDER BY dia, hora_servicio
      LIMIT 1
  ) AS b
ORDER BY dia DESC, hora_servicio DESC
  LIMIT 1
;

关于mysql选择当前时间旁边的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11730832/

10-12 12:55
查看更多