如何从一周开始一天

时间:2018-11-30 09:48:26

标签: sql sql-server

在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

4 个答案:

答案 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