在DATETIME给出的一周内获取特定的工作日

用户名

我需要通过一个DateTimeDayOfWeek然后从中获得DateTime所选的那一周。

--Sunday-1
--Monday-2
--Tuesday-3
--Wednesday-4
--Thursday-5
--Friday-6
--Saturday-7

DECLARE @DayOfWeek TINYINT = 1
DECLARE @Date DATETIME = '2016-07-21 23:47:11.133'
SELECT DATEADD(wk, DATEDIFF(wk,0,@Date), @DayOfWeek)

例如:

对于这一点,我需要得到像日期2016-07-24 00:00:00Sunday在那一周。

有任何想法吗?

Shnugo

使用datetime值时,您必须非常小心!尤其是一天的索引很棘手。您应该始终考虑到特定于文化的差异:

--The first of January was a Friday in 2016
DECLARE @testDate DATE = {d'2016-01-01'};

-我尝试德国文化,这从星期一开始

SET LANGUAGE GERMAN;
SELECT @@DATEFIRST,DATEPART(WEEKDAY,@testDate); --in Germany the Friday was 5th day

-从周日开始,与英国文化相同

SET LANGUAGE ENGLISH;
SELECT @@DATEFIRST,DATEPART(WEEKDAY,@testDate); --in English culture this is the 6th day

-您可以通过在Modulo 7中添加这些值来使这种文化独立

SET LANGUAGE GERMAN;
SELECT (@@DATEFIRST + DATEPART(WEEKDAY,@testDate)) % 7; --in Germany the Friday was 5th day

SET LANGUAGE ENGLISH;
SELECT (@@DATEFIRST + DATEPART(WEEKDAY,@testDate)) % 7; --in English culture this is the 6th day

现在,两个查询在星期五返回相同的值6

您的示例将星期日表示为一周的第一天,因此,实际上,到给定日期的一周中的星期日应该是7月17日。您的预期产量(7月24日)是下周的第一天,不是吗?

试试这个:

DECLARE @DayOfWeek TINYINT = 1;
DECLARE @Date DATETIME = '2016-07-21 23:47:11.133';
SELECT CAST(@Date + @DayOfWeek - (@@DATEFIRST + DATEPART(WEEKDAY,@Date)) % 7 AS DATE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在DATETIME给出的一周内获取特定的工作日

来自分类Dev

改善脚本以获取前一周的工作日

来自分类Dev

改善脚本以获取前一周的工作日

来自分类Dev

如何在给定日期的一周内获得工作日?

来自分类Dev

按周分组,获取一周的第一天,按工作日旋转

来自分类Dev

Java一年中第一周的最少工作日

来自分类Dev

Java一年中第一周的最少工作日

来自分类Dev

在 Python 中查找一周的最后一个工作日

来自分类Dev

Pandas - 基于一周的最后一个工作日的条件列创建

来自分类Dev

如何汇总给定一周以及每个工作日的总计?

来自分类Dev

Mysql中前一周的5个工作日

来自分类Dev

从今天和一周后生成工作日

来自分类Dev

如何获得前一周的工作日和接下来的两周的工作?

来自分类Dev

如何在python中获取日期范围内某些特定工作日的列表

来自分类Dev

在NOW()的一周内从db获取行

来自分类Dev

在NOW()的一周内从db获取行

来自分类Dev

获取DataFrame的Datetime列的工作日/星期几

来自分类Dev

获取工作日DateTime两个日期的列表

来自分类Dev

如何从日期段获取特定的工作日?

来自分类Dev

Rails-获取与特定工作日匹配的记录

来自分类Dev

PHP 获取两个特定工作日的日期

来自分类Dev

Java-获取一周的星期一日期给该星期的日期

来自分类Dev

从特定日期提前一周

来自分类Dev

获取一周中的天数

来自分类Dev

如何获取一周的记录

来自分类Dev

仅在一周内安排Cron

来自分类Dev

绘制一周内发生的日期

来自分类Dev

获得一周内的最低金额

来自分类Dev

R-将周号分配给一系列工作日