我正在基于[日期]字段的选择查询中使用这些公式。 1月至6月学期为1个学期,7月至12月学期为2个学期。季度是3个月的版本(1月至3月为1个版本)。
case when Month([Date])>=7 then 2 else 1 end as [Semester],
ceiling((Month([Date])-1)/3)+1 as [Quarter]
这些工作,但是我想知道是否有一个更简单/更优雅的解决方案(尽管我已经检查了datetime函数)。
对我来说,奇怪的是,具有ntile()函数的语言在日期上没有类似的东西。
答案 0 :(得分:3)
DATEPART适合您的情况。
CASE WHEN DATEPART(quarter,[Date]) >= 3 THEN 2 ELSE 1 END as [Semester],
DATEPART(quarter,[Date]) as [Quarter]
答案 1 :(得分:2)
DATEPART
可以轻松给您四分之一。
它没有一个学期或半年的选项,但是您可以使用与当前用于季度计算的类似数学轻松地从季度中得出。
((DATEPART(quarter,[Date])-1)/2)+1 as [Semester],
DATEPART(quarter,[Date]) as [Quarter]
答案 2 :(得分:0)
select
CASE WHEN month([DATE]) < 7 then '01'
else '02'
end
FROM [Table]
您可以从 MONTH(date) 获取学期编号
答案 3 :(得分:0)
也许以后吧。
学期:cast(ceiling((extract(MONTH FROM madate))/6) as integer)