次のシグネチャを使用して、カスタムの MySQL 関数とプロシージャを作成できます。
- CREATE FUNCTION ToUpper15 (dateParam DATETIME)
- CREATE FUNCTION ToLower15 (dateParam DATETIME)
- CREATE PROCEDURE AddIntervalMinutes (開始日 DATETIME、終了日 DATETIME、間隔 INT)
これは疑似MySQL コードの例です。私は MySQL をプログラミングしたことがありません。ドキュメントを探してみましたが、ひどいものでした。それ以外の場合は、言語の構文のドキュメントを見つけることができれば、これは実際には 30 分のタスクです。
覚えておいてください
- 45 分を超えて切り上げると、次の時間に丸められます
- ToLower15 で同じことを行います
- システム関数 AddTime() を使用して 15 分間隔を実行します
以下は、これを行う方法です
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