首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找一周的最后一天

查找一周的最后一天
EN

Stack Overflow用户
提问于 2014-02-11 03:55:52
回答 1查看 477关注 0票数 6

我有一个表,上面有一堆日期(准确地说,期权到期日)。我需要查询这个数据库来查找存储在表中的特定星期的最后一天。

在查询这个表时,我只能得到年份、月份和具体的星期。在此基础上,我需要找到表中存储的与此匹配的日期。

我创建了以下查询来查找此特定日期2013年3月28日

代码语言:javascript
运行
复制
SELECT M_SETNAME, M_LABEL, M_MAT FROM OM_MAT_DBF
WHERE M_SETNAME = 'IMM_OSET  '
AND MONTH(M_MAT) = 3
AND YEAR(M_MAT) = 2013
AND ((DATEPART(day,M_MAT)-1)/7 + 1) = 5

你们知道我如何改变最后一个条件,使3月28日被认为是这个月的第5周,而不是现在的第4周。

EN

Stack Overflow用户

发布于 2014-02-13 23:06:49

您还可以使用DATEPART来获取周的编号(在一年中),但是,您还可以获取每个月的1号,并将该周也包含在内: week of MY DATE - WEEK OF the WEEK OF MY DATE- week of FIRST DAY FOR本月+1。

这里有一个例子。

代码语言:javascript
运行
复制
DECLARE @Dt datetime

SELECT @Dt='03-28-2013'

SELECT DATEPART( wk, @Dt) - DATEPART( wk, Convert(Date,Convert(varchar(4),YEAR(@Dt))
+ '-' + Convert(varchar(2), MONTH(@Dt))
+ '-' + Convert(varchar(2), 1))) + 1

编辑:另外,看看你的代码,你可以添加天花板。如果结果是== 2.7,这意味着它通过了第二周,然而,它被四舍五入为2,而实际上它应该是3。

如果添加天花板,转换为十进制应该可以。

代码语言:javascript
运行
复制
SELECT  MONTH(@Dt), 
        YEAR(@Dt), 
        ((CEILING(Convert(decimal,DATEPART(day,@Dt)-1)/7)) + 1) 
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21686675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档