You can create a custom MySQL function and Procedures with the following signatures.
- CREATE FUNCTION ToUpper15(dateParam DATETIME)
- CREATE FUNCTION ToLower15(dateParam DATETIME)
- CREATE PROCEDURE AddIntervalMinutes(startdate DATETIME, enddate DATETIME, interval INT)
Here is an example of some pseudo MySQL Code, I have never programmed MySQL, I tried to look for the documentation and its terrible, otherwise this is really a 30 minute Task, if you can find documentation of the Syntax of the Language.
Keep in mind
- When you round up above 45 minutes you are rounding to the next hour
- Do the same with ToLower15
- Use system function AddTime() to do the 15 minute interval
Below is how you might do this
CREATE FUNCTION ToUpper15(dateParam DATETIME)
RETURNS DATETIME
DETERMINISTIC
BEGIN
DECLARE dateYear INT;
DECLARE dateMonth INT;
DECLARE dateDay INT;
DECLARE dateHour INT;
DECLARE dateMinute INT;
SET dateYear = YEAR(dateParam);
SET dateMonth = MONTH(dateParam);
SET dateDay = DAY(dateParam);
SET dateHour = HOUR(dateParam);
SET dateMinute = MINUTE(dateParam);
IF (dateMinute >= 0 AND dateMinute < 15) THEN
SET dateMinute = 15;
ELSEIF (dateMinute >= 15 AND dateMinute < 30) THEN
SET dateMinute = 30;
ELSEIF (dateMinute >= 30 AND dateMinute < 45) THEN
SET dateMinute = 45;
ELSEIF (dateMinute >= 45 AND dateMinute < 60) THEN
BEGIN
SET dateMinute = 0;
SET dateHour = dateHour + 1;
END
END IF;
RETURN CONCAT(dateYear, '-', dateMonth, '-', dateDay, ' ', dateHour, ':', 'dateMinute');
END