例如,如何在SQL查询中使用LIKE
Select T0.[U_Tds] FROM HEM1 T0 where T0.[toDate] LIKE '%YEAR($[HEM1.toDate])'
对不起,我有用户定义的天数字段(U_Tds),所以我想以用户定义的值获取同一年中所有天数的列表
请任何人都可以帮助我
答案 0 :(得分:1)
您极不可能将LIKE
(与字符串相关的功能)用于日期。更有可能使用日期函数代替。
此外,如果该查询需要日期范围,则无论如何都要避免使用函数。只需将date列与2个日期常量进行比较即可。例如
SELECT T0.[FromDate]
FROM HEM1 T0
WHERE T0.[toDate] >= '2017-01-01' and T0.[toDate] < '2018-01-01'
这将提供全年的数据,而无需为表中的每一行调用一个函数。
上面的语法在SQL Server中可以使用,但是SQL Server中日期文字的更安全格式是:
SELECT T0.[FromDate]
FROM HEM1 T0
WHERE T0.[toDate] >= '20170101' and T0.[toDate] < '20180101'
请注意,日期不是以人类可读的格式存储的。它们实际上存储为数字,然后转换为字符串,以便我们人类可以读取它们。这就是为什么您不使用此处的原因。日期本质上是数字,但是LIKE本质上是关于字符串的。例如您可能会假设日期以'2018-01-01'的格式存储,因此像'2018%'一样有效。但这不会。为此,您必须先将每个日期转换为字符串,例如
where convert(varchar(4), T0.[toDate] ,112) = '2018'-- very inefficient!
or
where format(T0.[toDate],'yyyy') = '2018' -- very inefficient!
答案 1 :(得分:0)
YEAR
是一个函数,然后可以将结果与%
Select T0.[FromDate] FROM HEM1 T0 where T0.[toDate] LIKE concat('%',YEAR($[HEM1.toDate]))