SQL:日期/时间相当于“%”的是什么?

时间:2016-07-21 12:43:02

标签: sql sql-server-2008 date wildcard

默认情况下,目标是使用'%'填充查询的所有输入字段,并让用户在任何他们想要的位置输入实际值。但是,这会导致DATE/TIME字段出现问题。我收到错误:Conversion failed when converting date and/or time from character string.如何才能达到'%'的等效值,但是对于日期?

DECLARE @trans_date datetime = '%'

SELECT
   t.lp_num,
   t.trans_date
FROM ISW_LPTrans AS t
WHERE t.trans_date = @trans_date

修改 - 删除了LIKE并替换为=,因为人们过于关注这一点而且这个的焦点问题

2 个答案:

答案 0 :(得分:0)

评论太长了。您的查询没有意义。 LIKE用于字符串,日期不是字符串。

如果您愿意,可以将日期转换为规范字符串格式,然后使用它。

但是,日期选择器是选择日期的更典型的解决方案,结果代码不使用LIKE

答案 1 :(得分:0)

您不能直接在日期使用LIKE关键字。 LIKE主要用于字符串值。

但是,您可以使用CONVERT functio n将日期转换为varchar,然后应用LIKE关键字。例如:

CONVERT(VARCHAR(25), trans_date, 126) LIKE '2016-10-01%'
  

默认情况下,目标是填充查询的所有输入字段   使用'%'并让用户在任何他们想要的地方输入实际值。

如果您希望允许该用户输入日期,那么您只需在日期列中提供 NULL 值,而不是使用%值填充它(,这绝对含糊不清日期栏