T-SQL :将 int 视为工作日
T-SQL : treat int as weekday
DECLARE @weekDayCounter int = 7;
SELECT @weekDayCounter + 1
--returns 8
问题是如何让 T-SQL 将 @weekDayCounter
视为工作日数字而不用写 case 或 if 语句?
我想知道是否有办法 CONVERT/CAST
将 int 转换为工作日数据类型,或者有一个数字序列在超过最大数字时重置为第一个数字(例如 12 月 31 日 + 1 天 = 1 月 1 日而不是 12 月 32 日或 23:59 + 1 小时 = 00:59 而非 24:59)
所以
SELECT @weekDayCounter + 1 --returns 1
如有任何答案,我们将不胜感激!
如果您只想让数字在每次超过 7 时返回到 1,一种选择是:
SELECT @weekDayCounter - (7 * FLOOR(@weekDayCounter/7))+1
它只是减去 7 *(7 进入@weekDayCounter 的次数)
如果您只想增加 1
到 7
范围内的值,您可以使用 modulus operator:
set @WeekDayCounter = @WeekDayCounter % 7 + 1;
DECLARE @weekDayCounter int = 7;
SELECT @weekDayCounter + 1
--returns 8
问题是如何让 T-SQL 将 @weekDayCounter
视为工作日数字而不用写 case 或 if 语句?
我想知道是否有办法 CONVERT/CAST
将 int 转换为工作日数据类型,或者有一个数字序列在超过最大数字时重置为第一个数字(例如 12 月 31 日 + 1 天 = 1 月 1 日而不是 12 月 32 日或 23:59 + 1 小时 = 00:59 而非 24:59)
所以
SELECT @weekDayCounter + 1 --returns 1
如有任何答案,我们将不胜感激!
如果您只想让数字在每次超过 7 时返回到 1,一种选择是:
SELECT @weekDayCounter - (7 * FLOOR(@weekDayCounter/7))+1
它只是减去 7 *(7 进入@weekDayCounter 的次数)
如果您只想增加 1
到 7
范围内的值,您可以使用 modulus operator:
set @WeekDayCounter = @WeekDayCounter % 7 + 1;