在SQL Server中,我可以每天使用select,但是现在我想根据Today选择每周的最后一个工作日。这意味着,当今天是星期五时,则我需要特定时段的整个星期五。
这是我所期望的(今天:2018/30/11):
2018/30/11
2018/23/11
2018/16/11
2018/9/11
2018/2/11
2018/26/10
2018/19/10
答案 0 :(得分:4)
假设预期结果的最后两行来自十月,以下是获取这些结果的方法:
select DATEADD(week, Numbers.Number, cast(getdate() as date))
from (values(0), (-1), (-2), (-3), (-4), (-5), (-6)) Numbers(Number)
order by 1 desc
使用Table Value Constructor,我们得到一个表Numbers
,该表具有一列Number
,值从0到-6。然后,将这个星期数添加到当前日期,即可获得所需的结果。
答案 1 :(得分:3)
我认为您想检索日期不超过7天的记录。 这应该可以解决问题:
var valueBufferFactory = set.GetService<IRelationalValueBufferFactoryFactory>()
.Create(entityType.GetProperties().Select(p => p.ClrType).ToArray(), null);
答案 2 :(得分:0)
希望这会有所帮助。开始日期和结束日期是您要获取其间日期的日期
DECLARE @weeks INT,
@start_date DATETIME = '2018/10/01',
@end_date DATETIME = '2018/11/30',
@date DATETIME,
@day INT = 7
CREATE TABLE #temp (result_date DATETIME)
SELECT @weeks = DATEDIFF(week, @start_date, @end_date)
SELECT @weeks
WHILE @weeks <> 0
BEGIN
SET @day = @day + 7
INSERT INTO #temp
SELECT dateadd(day, -@day, GETDATE())
SET @weeks = @weeks - 1
END
SELECT * FROM #temp
答案 3 :(得分:0)
我尝试使用下面的代码。
declare @today datetime = cast(floor(cast(GETDATE() as float)) as smalldatetime)
declare @i int = 1
while @i < 8
begin
print(@today)
set @today = DATEADD(DAY,-7,@today)
set @i = @i + 1
end