У меня есть таблица с именем time, где дата в столбце даты хранится в формате типа varchar (m-d-y)
Я запускаю мероприятие в 1 час ночи каждую ночь, вставляя данные в ежедневную таблицу данных.
в приведенной ниже формуле я указал значение A.Date вчерашнего дня (например, если сегодня (01-12-2019) в 1:00 запускается событие, то следует выбрать дату вчерашнего дня (01-11-2019)
INSERT INTO dailydata
SELECT A.Date, A.EmpID, B.name, B.TeamName,
SUM(CASE WHEN State = 'active' THEN A.MinutesatState ELSE 0 END) AS active,
SUM(CASE WHEN State = 'idle' THEN A.MinutesatState ELSE 0 END) AS idle,
Min(A.Statestarttime) AS Stime, MAX(A.StateEndtime) AS Etime,
ROUND((TIME_TO_SEC(MAX(A.StateEndtime))/60 -
TIME_TO_SEC(MIN(A.StateStarttime))/60)/60,2) as Inofficehr,
ROUND(SUM(CASE WHEN State = 'active' THEN A.MinutesatState ELSE 0 END)/60,2)
AS activehr,
ROUND(SUM(CASE WHEN State = 'idle' THEN A.MinutesatState ELSE 0 END)/60,2)
AS idlehr
FROM time A join ttld.login B on A.EmpID=B.username
WHERE A.Date= subdate(current_date, 1) AND A.Statestarttime <>'' AND A.StateEndtime <>''
GROUP BY A.EmpID;
Во время выполнения этого кода я получаю
Предупреждение: # 1292 Неверное значение даты и времени:
код работает нормально, если я изменяю A.Date= subdate(current_date, 1)
на A.Date='01-13-2019'
, но чтобы сделать это событием, мне нужен какой-то способ автоматически получить вчерашнюю дату.
Я пытался
SELECT SUBDATE(NOW(), 1);
SELECT SUBDATE(NOW(), INTERVAL 1 DAY);
SELECT NOW() - INTERVAL 1 DAY;
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);