Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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参数_Sql_Parameters_Optional Parameters - Fatal编程技术网

将月份和日期添加到年作为SQL参数

将月份和日期添加到年作为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

我需要能够为参数将月份和日期添加到年份中

由于我们的会计年度从每年的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.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,那么它将运行。如果您有任何其他问题,请让我知道。”