我正在尝试从此查询产生的日期中列出相应的星期数。
select Date,Time,EndDate,EndTime
FROM Test
WHERE (StartDate >= '01.01.2019')
ORDER BY StartDate
基本上,我想将此查询的星期数添加到末列。 无论如何,我都无法编辑数据库,我只想从日期中提取星期数,并将其作为结果末尾的一列。
以下示例数据:
答案 0 :(得分:1)
只需使用datepart函数:
select datepart(week, Date), Date,Time,EndDate,EndTime
FROM Test
WHERE (StartDate >= '01.01.2019')
ORDER BY StartDate
答案 1 :(得分:1)
使用datepart(wk,date)
:-
select Date,Time,EndDate,EndTime,datepart(wk,date)as week
FROM Test
WHERE (StartDate >= '01.01.2019')
ORDER BY StartDate
答案 2 :(得分:1)
在英国使用ISO周:第一年的一周包括1月4日。
所以:
set datefirst 1 --this sets Monday as first day of the week
set dateformat dmy -- nosrmal date format
select Date,Time,EndDate,EndTime,datepart(iso_week,date)as week
FROM Test
WHERE (StartDate >= '01.01.2019')
ORDER BY StartDate
请记住,1月的第一天可能是上一年的第52或53周,12月的最后一天也可能属于新年的第一周。
查看周数并推迟到其所属年份的支票如下:
week_and_year = case when datepart(iso_week,date)>=52 and month(date)=1
then concat(year(date)-1,datepart(iso_week,date))
when datepart(iso_week,date)=1 and month(date)=12
then concat(year(date)+1,datepart(iso_week,date))
else concat(year(date),datepart(iso_week,date))
end
答案 3 :(得分:0)
SELECT DATEPART(WEEK,GETDATE()-14)
SELECT DATEPART(WEEK,GETDATE()-7)
SELECT DATEPART(WEEK,GETDATE())
SELECT DATEPART(WEEK,GETDATE()+7)
SELECT DATEPART(WEEK,GETDATE()+14)
答案 4 :(得分:0)
如果您使用Vertica,请尝试
date_part('ISODOW', date)
'ISODOW'-星期中的ISO,是介于1和7之间的整数,其中星期一是1。
答案 5 :(得分:-1)
我通常使用ROW_NUMBER()
函数来完成此操作:
select
Date,
Time,
EndDate,
EndTime,
ROW_NUMBER() over (partition by year(EndDate), datepart(weekday, EndDate) order by EndDate) as WeekNumInYear
FROM Test
WHERE
(StartDate >= '01.01.2019')
ORDER BY
StartDate