я написал этот запрос будет, но это возвращение нулевой, хотя это неMysql получить кортежи, где дата в этом месяце
должен я работать с БД, содержащей раз работы. Таким образом, каждый раз работа имеет начало DateTime и конец DateTime
Я хотел бы, чтобы все рабочие времена, которые были записаны в этом месяце:
SELECT id, DATE_FORMAT(DATE(t.begin), "%d-%m-%Y") as date,
CONCAT(DATE_FORMAT(t.begin, "%H:%i"), " - ", DATE_FORMAT(t.end, "%H:%i")) as timerange,
CASE WHEN t.end = "0000-00-00 00:00:00"
THEN TIME_FORMAT(TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), t.begin), "%H:%i")
ELSE TIME_FORMAT(TIMEDIFF(t.end, t.begin), "%H:%i")
END as fulltime_duration,
(
SELECT TIMEDIFF(l.end, l.begin) as duration
FROM timeslots l
WHERE l.type = 2
AND l.parent_id = t.id
) as lunch_duration
FROM timeslots t
WHERE t.user_id = '.$userId.'
AND t.approved = 1
AND t.type = '.Timeslot::DAY.'
AND DATE(begin) >= DATE_FORMAT(CURDATE(), "%Y-%m-01")
ORDER BY t.begin
, когда я заменить эту строку:
AND DATE(begin) >= DATE_FORMAT(CURDATE(), "%Y-%m-01")
по:
AND WEEKOFYEAR(begin) = WEEKOFYEAR(NOW())
возвращает все времена, записанные на этой неделе. Так что все работает, кроме этой линии
AND DATE(begin) >= DATE_FORMAT(CURDATE(), "%Y-%m-01")
Когда я заменить «-01» на «% d» возвращает все время работы сегодня так я предполагаю, что проблема возникает из этого «-01». Но я не понимаю, как это сделать по-другому.
Любой, чтобы помочь мне ...
попробовать: И ДАТА (начало)> = ДАТА (CURDATE()) –
Ваше состояние работает для меня: http://rextester.com/HEBEM85257 –
@ShankaSMS это возвращение временных интервалов сегодня, что логика – Fab