如何从前一个九月得到九月一号?
How to get the 1st of September from the previous September?
如果我想 select 相对于今天的日期,我可以这样做:
DateAdd(month, -2, N'1-Jan-2019')
这将给我 2018 年 11 月 1 日。
我如何获得前一年的 9 月 1 日日期?
E.G
假设是 2019 年 7 月,
我想要 2018 年 9 月 1 日,而不是 2019 年。
然而,
假设是 2019 年 11 月,
我想要 2019 年 9 月 1 日,而不是 2018 年。
这怎么可能?
您可以通过从您的 date
值中减去 8 个月然后使用结果 year
来建立您的 9 月日期:
declare @d table(d date);
insert into @d values ('20170101'),('20180101'),('20181101'),('20190101'),('20191001'),('20190901'),('20190921'),('20190808');
select d
,datefromparts(year(dateadd(month,-8,d)),9,1) as PrevSeptDate
,datetimefromparts(year(dateadd(month,-8,d)),9,1,0,0,0,0) as PrevSeptDateTime
from @d
order by d;
输出
+------------+--------------+-------------------------+
| d | PrevSeptDate | PrevSeptDateTime |
+------------+--------------+-------------------------+
| 2017-01-01 | 2016-09-01 | 2016-09-01 00:00:00.000 |
| 2018-01-01 | 2017-09-01 | 2017-09-01 00:00:00.000 |
| 2018-11-01 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-01-01 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-08-08 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-09-01 | 2019-09-01 | 2019-09-01 00:00:00.000 |
| 2019-09-21 | 2019-09-01 | 2019-09-01 00:00:00.000 |
| 2019-10-01 | 2019-09-01 | 2019-09-01 00:00:00.000 |
+------------+--------------+-------------------------+
如果我想 select 相对于今天的日期,我可以这样做:
DateAdd(month, -2, N'1-Jan-2019')
这将给我 2018 年 11 月 1 日。
我如何获得前一年的 9 月 1 日日期?
E.G
假设是 2019 年 7 月, 我想要 2018 年 9 月 1 日,而不是 2019 年。
然而,
假设是 2019 年 11 月, 我想要 2019 年 9 月 1 日,而不是 2018 年。
这怎么可能?
您可以通过从您的 date
值中减去 8 个月然后使用结果 year
来建立您的 9 月日期:
declare @d table(d date);
insert into @d values ('20170101'),('20180101'),('20181101'),('20190101'),('20191001'),('20190901'),('20190921'),('20190808');
select d
,datefromparts(year(dateadd(month,-8,d)),9,1) as PrevSeptDate
,datetimefromparts(year(dateadd(month,-8,d)),9,1,0,0,0,0) as PrevSeptDateTime
from @d
order by d;
输出
+------------+--------------+-------------------------+
| d | PrevSeptDate | PrevSeptDateTime |
+------------+--------------+-------------------------+
| 2017-01-01 | 2016-09-01 | 2016-09-01 00:00:00.000 |
| 2018-01-01 | 2017-09-01 | 2017-09-01 00:00:00.000 |
| 2018-11-01 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-01-01 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-08-08 | 2018-09-01 | 2018-09-01 00:00:00.000 |
| 2019-09-01 | 2019-09-01 | 2019-09-01 00:00:00.000 |
| 2019-09-21 | 2019-09-01 | 2019-09-01 00:00:00.000 |
| 2019-10-01 | 2019-09-01 | 2019-09-01 00:00:00.000 |
+------------+--------------+-------------------------+