通过搜索查询忽略日期

时间:2018-07-20 10:35:59

标签: sql-server tsql

大家早上好

我遇到了一个我以前从未看到过的问题,在此之前完全忽略了im参数使用的日期,查询给了我歧义的结果。

我正在使用的代码是

location.href.split('table=')[1].split('&')[0]

它应该给我一个结果,但一直给我7行,其中有些与paramenter值无关。...请帮忙!

先谢谢您

2 个答案:

答案 0 :(得分:0)

您的问题从第一行开始:

DECLARE @STARTDATE VARCHAR = '03/07/2018'

有两件大事是错误的,一件是重要但不是主要的:

  • 日期应为 DATES ,而不是字符串。
  • 您已经声明了一个带有一个字符的字符串。
  • 您应该始终使用正确的ISO标准日期格式

将此更改为:

DECLARE @STARTDATE DATE = '2018-07-03';

然后将比较作为日期:

CONVERT(DATE, CloseDateTime) = @STARTDATE

据我所知,CONVERT()CAST()DATE是唯一仍允许使用索引的功能。

编辑:

您的where子句也格式错误。您可能打算:

where Adv_OilTestComplete IN ('Low oil', 'Tube restriction', 'No dip stick', 'Vendor refused') AND
      CONVERT(DATE, CloseDateTime) = @STARTDATE

答案 1 :(得分:0)

您在过滤器部分中编码的主要问题

where Adv_OilTestComplete='Low oil' 
OR Adv_OilTestComplete='Tube restriction'
OR Adv_OilTestComplete='No dip stick' 
OR Adv_OilTestComplete='Vendor refused' AND CONVERT(DATE, CloseDateTime) = @STARTDATE

必须是这样

   where (Adv_OilTestComplete='Low oil' 
    OR Adv_OilTestComplete='Tube restriction'
    OR Adv_OilTestComplete='No dip stick' 
    OR Adv_OilTestComplete='Vendor refused') AND CONVERT(DATE, CloseDateTime) = @STARTDATE

因为并且具有比更高的优先级,或者您可以选中此reference