【发布时间】:2018-12-24 23:12:57
【问题描述】:
我有这个 vb.NET 代码,想在 MySQL 中写一个函数来做同样的事情。
Public Function IsWeekdayTimeInRange(DateToCheck As DateTime, StartDayOfWeek As DayOfWeek,
EndDayOfWeek As DayOfWeek) As Boolean
Dim WeekdaysInRange As New List(Of DayOfWeek)
WeekdaysInRange.Add(StartDayOfWeek)
Dim i As Integer = StartDayOfWeek
While i <> EndDayOfWeek
i += 1
i = If(i = 7, 0, i)
WeekdaysInRange.Add(i)
End While
Return WeekdaysInRange.Contains(DateToCheck.DayOfWeek)
End Function
我目前在 MySQL 中,但由于我从未编写过 SQL 函数,因此我需要一些帮助。
DELIMITER |
CREATE FUNCTION IS_BETWEEN_WEEKDAYS(d DATETIME, s INT, e INT)
RETURNS BOOLEAN DETERMINISTIC
BEGIN
DECLARE weekdayToCheck INT;
DECLARE result BOOLEAN;
DECLARE i INT;
SET result = false;
SET weekdayToCheck = WEEKDAY(d);
SET i = s;
WHILE(i <> e) DO
/* more logic here */
END WHILE;
RETURN result;
END; |
DELIMITER ;
编辑:由于我现在了解到 MySQL 具有 Weekday(Monday) = 0,因此我的函数也需要转换为 Weekday(Sunday) = 0,因为我的数据使用该格式。
【问题讨论】:
-
weekdayToCheck > s && weekdayToCheck < e应该是一个好的开始