将月份和日期添加到年作为SQL参数
我需要能够为参数将月份和日期添加到年份中 由于我们的会计年度从每年的7月1日开始,因此我需要将其设置为用户可以键入会计年度“yyy”作为参数,它将返回从该年度开始前一年的7月1日开始到该年度7月1日结束的会计年度的结果 比如说。对于2016财年,我需要2015年7月1日之后和2016年6月30日之前的所有记录。目前,用户必须记住指定7月1日和6月30日。我怎样才能让他们在这一年里打字呢 当前有效,但需要完整日期作为参数将月份和日期添加到年作为SQL参数,sql,parameters,optional-parameters,Sql,Parameters,Optional Parameters,我需要能够为参数将月份和日期添加到年份中 由于我们的会计年度从每年的7月1日开始,因此我需要将其设置为用户可以键入会计年度“yyy”作为参数,它将返回从该年度开始前一年的7月1日开始到该年度7月1日结束的会计年度的结果 比如说。对于2016财年,我需要2015年7月1日之后和2016年6月30日之前的所有记录。目前,用户必须记住指定7月1日和6月30日。我怎样才能让他们在这一年里打字呢 当前有效,但需要完整日期作为参数 Where (E.end_date > @param1 Or E.en
Where (E.end_date > @param1 Or E.end_date Is Null Or @param1 Is Null) And
(E.start_date < @param2 Or e.start_date Is Null Or @param2 Is Null)
其中(E.end_date>@param1或E.end_date为Null或@param1为Null)和
(E.start_date<@param2或E.start_date为空或@param2为空)
但这行不通
Where (A.end_date > @param1 Or A.end_date Is Null Or @param1 Is Null) And
(A.start_date < DateAdd(day, 1, @param2) Or A.start_date Is Null Or
@param2 Is Null)
And
(A.end_date > dateadd(yyyy,-1,'@param3-07-01') And
A.start_date < '@param3-07-01' Or @param3 Is Null)
其中(A.end_date>@param1或A.end_date为Null或@param1为Null)和
(A.start_datedateadd(yyyy,-1,@param3-07-01)和
A.开始日期<'@param3-07-01'或@param3为空)
SQL,至少在他们给我的用于记录软件的输入SQL的小部件中,不喜欢将参数放入日期字符串中以评估日期的语法,但它将接受
'2016-07-01'
将允许我在where子句的字符串中放入参数的其他情况,比如像“%@param1%”这样的,
我是在向后看这个问题。解决方案不是将year参数转换为日期,而是将日期转换为年份
year(dateAdd(mm,6,A.start_date))
year(dateAdd(mm,6,A.end_date))
我把它插入到我的代码中,效果很好
Where (year(dateAdd(mm,6,A.end_date)) > @param1 Or A.end_date Is Null Or @param1 Is Null) And
(year(dateAdd(mm,6,A.start_date)) < DateAdd(day, 1, @param2) Or A.start_date Is Null Or @param2 Is Null)
其中(年份(dateAdd(mm,6,A.end_date))>@param1或A.end_date为Null或@param1为Null)和
(年份(dateAdd(mm,6,A.start_date))
我在向后看。解决方案不是将year参数转换为日期,而是将日期转换为年份
year(dateAdd(mm,6,A.start_date))
year(dateAdd(mm,6,A.end_date))
我把它插入到我的代码中,效果很好
Where (year(dateAdd(mm,6,A.end_date)) > @param1 Or A.end_date Is Null Or @param1 Is Null) And
(year(dateAdd(mm,6,A.start_date)) < DateAdd(day, 1, @param2) Or A.start_date Is Null Or @param2 Is Null)
其中(年份(dateAdd(mm,6,A.end_date))>@param1或A.end_date为Null或@param1为Null)和
(年份(dateAdd(mm,6,A.start_date))
更简单的方法是将year参数作为字符串,并将日期连接为字符串文字。然后,我们可以使用数据类型转换函数来转换日期
例如:
SELECT convert(datetime, '23-10-2016', 105) -- dd-mm-yyyy
更简单的方法是将year参数作为字符串,并将日期连接为字符串文字。然后,我们可以使用数据类型转换函数来转换日期 例如:
SELECT convert(datetime, '23-10-2016', 105) -- dd-mm-yyyy
您使用哪台SQL server?]来自供应商:Reliable不共享此信息,因为它是专有的,但是我与我们的it部门进行了检查,发现如果您编写的查询是标准SQL,那么它将运行。如果您有任何其他问题,请让我知道。“您使用哪台SQL server?]来自供应商:Reliable不共享此信息,因为它是专有信息,但是我与我们的it部门进行了检查,发现如果您编写的查询是标准SQL,那么它将运行。如果您有任何其他问题,请让我知道。”