pmdci Asked: 2016-10-06 11:42:00 +0800 CST2016-10-06 11:42:00 +0800 CST 2016-10-06 11:42:00 +0800 CST 查找月份中星期几的迭代 772 我有一个日期维度表,我需要在其中添加一个新列,我在其中定义了一个月内星期几的迭代(第二个周一/周二/周三/周四/周五/周六/周日等) . 是否可以只对表的日期列进行计算,该列的类型为“日期”? sql-server t-sql 2 个回答 Voted Best Answer Philᵀᴹ 2016-10-06T12:32:35+08:002016-10-06T12:32:35+08:00 它实际上非常容易使用DAY(),因为 1-7 将是 1,8-14 将是 2,15-21 将是 3,22-28 将是 4,29-31 将是 5。不管名字是什么这一天,将永远适用。 select case when DAY(yourdate) <=7 then 1 when DAY(yourdate) <=14 then 2 when DAY(yourdate) <=21 then 3 when DAY(yourdate) <=28 then 4 else 5 end as occurance from yourtable; (case短路) Andriy M 2016-10-06T12:52:37+08:002016-10-06T12:52:37+08:00 或者,您可以使用公式计算结果: SELECT (DAY(YourDate) + 6) / 7 AS Iteration FROM dbo.YourTable ; 在除法运算的两个操作数都是整数的情况下,结果也是一个整数,并且是一个向下舍入的整数。 所以,DAY(YourDate)= 1 会给你 1,因为 (1 + 6) / 7 = 7 / 7 = 1 A 2 将产生 (2 + 6) / 7 = 8 / 7 = 1 – 再次 1. 如果是 7,你仍然得到 1: (7 + 6) / 7 = 13 / 7 = 1 但是 8 将导致 2: (8 + 6) / 7 = 14 / 7 = 2 等等。
它实际上非常容易使用
DAY()
,因为 1-7 将是 1,8-14 将是 2,15-21 将是 3,22-28 将是 4,29-31 将是 5。不管名字是什么这一天,将永远适用。(
case
短路)或者,您可以使用公式计算结果:
在除法运算的两个操作数都是整数的情况下,结果也是一个整数,并且是一个向下舍入的整数。
所以,
DAY(YourDate)
= 1 会给你 1,因为A 2 将产生
– 再次 1.
如果是 7,你仍然得到 1:
但是 8 将导致 2:
等等。