Поиск участников между 2мя датами по вводному date_from и date_to, оригинальная идея от автора промышленных решений в сфере SQL.
WHERE 1 AND date_from <= :date_to AND date_to >= :date_from
Простенький Insert or Update очень интересный пример как можно передать значения с Insert'а
INSERT INTO menu_sub (id, name, DESC, misc) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE name=VALUES(name), DESC=VALUES(DESC), misc=VALUES(misc)
Немного фишечек от MariaDB
-- Insert без Into INSERT `table` (`field`) VALUES ("value"); -- join по одноименному столбцу SELECT u.*, g.name FROM `users` `u` LEFT JOIN `groups` `g` USING `user_id`
AutoIncrement ручками, скорее всего не супер точный но рабочий точно.
INSERT INTO test1 (`test1`, `test2`) (SELECT ROUND(mr.test1 + 0.2, 2) AS A, ROUND(mr.test1 + 0.3, 2) AS B FROM test1 mr LEFT JOIN (SELECT MAX(test1.test1) AS valmax FROM test1) AS valmaxTable ON mr.test1 = valmaxTable.valmax WHERE mr.test1 = valmaxTable.valmax); -- PK test1 test2 -- 1 0,1 0,2 -- 2 0,3 0,4 --- 3 0,5 0,6
Начало/конец Дня, Недели, Месяца
SELECT CAST(CURDATE() AS datetime) AS `DayBegin`, DATE_SUB(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 SECOND) AS `DayEnd`, DATE_ADD(CURDATE(), INTERVAL(-WEEKDAY(CURDATE())) DAY) AS `BeginOfWeek`, DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY) AS `EndOfWeek`, CAST(DATE_FORMAT(CURDATE() ,'%Y-%m-01') AS DATETIME) AS `BeginOfMonth`, DATE_SUB(DATE_ADD(CAST(DATE_FORMAT(CURDATE() ,'%Y-%m-01') AS DATE), INTERVAL 1 MONTH), INTERVAL 1 SECOND) AS `EndOfMonth`