我正在做一些事情,这是我需要做的最后一件事。我已经尝试了一切,从
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date LIKE '1986%';
我一直收到此错误消息。
提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。SQL状态:42883人物:73
请让我知道我做错了什么
谢谢
我正在做一些事情,这是我需要做的最后一件事。我已经尝试了一切,从
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date LIKE '1986%';
我一直收到此错误消息。
提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。SQL状态:42883人物:73
请让我知道我做错了什么
谢谢
4条答案
按热度按时间a11xaf1n1#
将类似于日期的数据类型视为字符串几乎从来都不是一个好主意(尽管有些RDBMS支持它)。
大多数RDBMS都支持标准的sql函数
extract()
。您似乎正在使用postgresql,这也不例外,因此:atmip9wb2#
您应该使用日期比较来表述:
为什么要使用直接比较法?有三个原因:
通常,列上的函数会阻止所有这些优化方法,类型转换也是如此。
特别是不应该使用
LIKE
。这是一个字符串函数。您希望在日期上使用日期函数和运算符。yi0zb3m43#
这是正常的,因为
hire_date
肯定是DATE数据类型,而运算符Like
只适用于String数据类型。Where DATEPART(year, hire_date) = '1986'
tmb3ates4#
SELECT名字,姓氏,聘用日期FROM雇员WHERE聘用日期LIKE '1986-%- %';这样就行了