【发布时间】:2018-05-25 19:21:08
【问题描述】:
任何帮助将不胜感激。它适用于 2/10/18、3/10/18 但不适用于 4/10/18 这是为了获得一个报告的日期范围,该报告在每个月的 10 号运行,适用于所有逾期 75 天且未在上个月报告中报告的帐户
DECLARE @TODAYS_DT DATE = '4/10/2018'
DECLARE @START_DT CHAR(10)
DECLARE @END_DT CHAR(10)
SELECT
@START_DT = CONVERT(VARCHAR, DATEPART(MM, DATEADD(MM, -1, DATEADD(DAY, -75, '4/10/2018')))) + '/20/' + CONVERT(VARCHAR, DATEPART(YEAR, DATEADD(DAY, -75, '4/10/2018')))
SELECT
@END_DT = CONVERT(VARCHAR, DATEPART(MM, DATEADD(DAY, -75, '4/10/2018'))) + '/20/' + CONVERT(VARCHAR, DATEPART(YEAR, DATEADD(DAY, -75, '4/10/2018')))
SELECT
@START_DT, @END_DT
【问题讨论】:
-
编辑您的问题并解释您要尝试做什么。为此目的,损坏的代码并不能很好地发挥作用。
-
哪个结果代表您的问题?你期待什么日期呢?你为什么这么期待?您的会话使用什么语言环境(即 2018 年 4 月 10 日是指 10 月 4 日还是 4 月 10 日)?但大多数情况下,正如戈登所问的那样,你到底想做什么?因为可能有比对表示日期的字符串进行文本操作更简单的方法......
-
您发布了一个代码损坏的问题,没有描述。您如何期望我们了解您想要完成的事情????学会提问!! stackoverflow.com/help/how-to-ask
-
为什么你认为应该是 2017 年? 2018 年 4 月 10 日减去 75 天是 2018 年 1 月 24 日。
-
按原样运行代码会得到
@START_DT = '12/21/2018'、@END_DT = '1/20/2018'。你想用这些日期做什么?正如马特所说,可能有一种更简单的方法来做你想做的事情。