如何从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