Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从前一个9月获得9月1日?_Sql_Date_Sql Server 2014 - Fatal编程技术网

Sql 如何从前一个9月获得9月1日?

Sql 如何从前一个9月获得9月1日?,sql,date,sql-server-2014,Sql,Date,Sql Server 2014,如果要选择与今天日期相关的日期,可以执行以下操作: DateAdd(month, -2, N'1-Jan-2019') 这将给我2018年11月1日的时间 我如何从上一年得到9月1日的日期 例如 比如说2019年7月, 我想要2018年9月1日,而不是2019年 但是, 比如说2019年11月, 我想要2019年9月1日,而不是2018年 这是怎么可能的?您可以通过从日期值中减去8个月,然后使用得到的年份来建立您的九月日期: declare @d table(d date); insert i

如果要选择与今天日期相关的日期,可以执行以下操作:

DateAdd(month, -2, N'1-Jan-2019')
这将给我2018年11月1日的时间

我如何从上一年得到9月1日的日期

例如

比如说2019年7月, 我想要2018年9月1日,而不是2019年

但是,

比如说2019年11月, 我想要2019年9月1日,而不是2018年


这是怎么可能的?

您可以通过从
日期
值中减去8个月,然后使用得到的
年份
来建立您的九月日期:

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;
输出
我不明白。你总是想要9月,还是有其他数学事件我在这里不明白?我只关心9月1日,从过去最近的9月开始,为什么你要使用
datetimefromparts()
而不是
datefromparts()
?@GordonLinoff习惯
+------------+--------------+-------------------------+
|     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 |
+------------+--------------+-------------------------+