如何从MSSQL获取本周的数据

如何从MSSQL获取本周的数据,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想知道怎样才能得到本周的记录 我使用的查询是: DECLARE @TableX TABLE ([Date] DATETIME) INSERT INTO @TableX SELECT '2014-2-17' UNION ALL SELECT '2014-2-18' UNION ALL SELECT '2014-2-19' UNION ALL SELECT '2014-2-20' UNION ALL SELECT '2014-2-21' SELECT * FROM @TableX

我想知道怎样才能得到本周的记录

我使用的查询是:

DECLARE @TableX TABLE

([Date] DATETIME)

INSERT INTO @TableX

SELECT '2014-2-17' UNION ALL

SELECT '2014-2-18' UNION ALL

SELECT '2014-2-19' UNION ALL

SELECT '2014-2-20' UNION ALL

SELECT '2014-2-21'


SELECT * FROM @TableX

WHERE Date >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) / 7 * 7, 0)
AND  Date <= DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0)

请尝试使用CTE。下面的查询返回一周中的7天,将星期日作为一周的开始日

;WITH t 
     AS (SELECT Dateadd(wk, Datediff(wk, 0, Getdate()), -1) AS WeekD, 
                1                                           cnt 
         UNION ALL 
         SELECT weekd + 1, 
                cnt + 1 
         FROM   t 
         WHERE  cnt + 1 < 8) 
SELECT CONVERT(NVARCHAR(20), weekd, 106) WeekDate, 
       Datename(dw, weekd)               Name 
FROM   t 

这将获得具有相同周数和相同年份的所有reacords

select * from cal where date_format(cal_date,'%v') = date_format(now(),'%v') and date_format(cal_date,'%Y')=date_format(now(),'%Y');
试试这个程序

Create PROCEDURE getAllDaysBetweenTwoDate
(
@FromDate DATETIME,    
@ToDate DATETIME
)
AS
BEGIN

    DECLARE @TOTALCount INT
    SET @FromDate = dateadd(dd,(datediff(dd,-53684,getdate())/7)*7,-53684)
    SET @ToDate = dateadd(dd,((datediff(dd,-53684,getdate())/7)*7)+6,-53684)
    Select  @TOTALCount= DATEDIFF(DD,@FromDate,@ToDate);

    WITH d AS 
            (
              SELECT top (@TOTALCount) AllDays = DATEADD(DAY, ROW_NUMBER() 
                OVER (ORDER BY object_id), REPLACE(@FromDate,'-',''))
              FROM sys.all_objects
            )
        SELECT AllDays From d

    RETURN 
END
GO

我能建议的最简单的约会方式是:

select datepart(wk, [date to test]) as field

希望有帮助

我没有得到当前一周的记录,我只得到了我正在使用的两天记录MS SQL 2008。作为旁白:插入@TableX VALUES“2014-2-17”、“2014-2-18”、“2014-2-19”、“2014-2-20”、“2014-2-21”;如果我一周的第一天是星期天,我可以使用DateFirst吗?请检查编辑后的答案,星期天作为一周的开始日期。是的,谢谢,我如何从自定义表中获取记录?您的查询中的In参数是否应该工作?我没有得到您。。。您的自定义表属于哪些类型的日期/范围?我有一个表,其中有各种日期。。我想得到基于本周的记录。。表示本周的交易是什么
select datepart(wk, [date to test]) as field