【发布时间】:2017-03-27 14:48:17
【问题描述】:
我有一个包含 2 个日期列的表。一列是交易日期,下一列是我用作批处理日期的日期,我根据交易日期的哪一天对日期进行分组。 我的演示表是基于这个 sql 脚本构建的
CREATE TABLE [DateDemo1](
[id] [int] IDENTITY(1,1) NOT NULL,
[mydate] [datetime] NULL,
[batchdate] [datetime] NULL
)
我插入的当前数据是(日期格式为dd/mm/yyyy)
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('01/03/2017', '01/03/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('02/03/2017', '01/03/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('03/03/2017', '01/03/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('06/03/2017', '01/03/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('01/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('02/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('03/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('04/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('05/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('06/04/2017', '01/04/2017')
INSERT INTO [DateDemo]([mydate],[batchdate]) VALUES ('07/04/2017', '01/04/2017')
我打算将每行的批处理日期更新为组(每月 1 日或每月 2 日)。使用该月的第 3 天来确定每个行条目将被分类的批处理日期。例如,2017 年 3 月 2 日的行应该属于 2017 年 2 月 2 日的批处理日期。 2017 年 3 月 3 日将是 2017 年 3 月 1 日的批处理日期,2017 年 3 月 4 日将是 2017 年 3 月 2 日的批处理日期,并且出于争论的原因,4 月 7 日将在 2017 年 4 月 2 日的批处理日期。 我想要的结果集我希望它如下
id, mydate, batchdate
1, 01/03/2017 , 02/02/2017
2, 02/03/2017 , 02/02/2017
3, 03/03/2017 , 01/03/2017
4, 06/03/2017 , 02/03/2017
5, 01/04/2017 , 02/03/2017
6, 02/04/2017 , 02/03/2017
7, 03/04/2017 , 01/04/2017
8, 04/04/2017 , 02/04/2017
9, 05/04/2017 , 02/04/2017
10, 06/04/2017 , 02/04/2017
11, 07/04/2017 , 02/04/2017
我需要一个 SQL UPDATE 函数,它会给我正在寻找的结果。伪代码也将受到欢迎。
提前致谢。
【问题讨论】:
-
为什么 2017 年 3 月 2 日被指定为 2017 年 2 月 2 日?并且基于 3 月,4 月 7 日不是 4 月 1 日吗?
-
好吧,您在提供示例数据方面做得很好,现在您要做的就是添加您想要的结果和当前尝试。
-
预期的输出/结果?
-
我每个月都有 2 个批处理日期 @SqlZim 或者每月 1 号的第 3 天,或者从第 4 号开始的其余时间将是每月的第 2 天。
-
@ZoharPeled 我已经尝试使用 DateAdd 和一个我没有获胜的案例陈述,我希望让我的方法保持开放,看看还有什么其他方法。
标签: sql sql-server date sql-update