如何编写查询以显示制造日期指定为 2010 的手机?
How to write a query to display the mobiles whose manufacturing date is specified as 2010?
基于此table,我编写了一个查询来显示制造日期在 2010 年之前的手机。
SELECT
ime_no,
model_name,
manufacturer,
date_of_manufac
FROM mobileinfo
WHERE date_of_manufac < 2010;
但是,发生了错误
第 3 行错误:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
帮助我解决此错误以及显示制造日期早于 2010 年的手机的查询!!!
select ime_no,model_name,manufacturer,date_of_manufac
from mobileinfo
where STR_TO_DATE(DATE_FORMAT(date_of_manufac,%Y),%Y)<2010;
这里我添加了函数DATE_FORMAT
and STR_TO_DATE
。
尝试上面的查询。
一种方法是从日期中提取年份:
where extract(year from date_of_manufac) < 2010;
更一般地,只需使用日期比较:
where date_of_manufac < date '2010-01-01'
这是更可取的,因为它可以在列上使用索引——如果索引可用并且索引的使用适合查询。
基于此table,我编写了一个查询来显示制造日期在 2010 年之前的手机。
SELECT
ime_no,
model_name,
manufacturer,
date_of_manufac
FROM mobileinfo
WHERE date_of_manufac < 2010;
但是,发生了错误
第 3 行错误:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
帮助我解决此错误以及显示制造日期早于 2010 年的手机的查询!!!
select ime_no,model_name,manufacturer,date_of_manufac
from mobileinfo
where STR_TO_DATE(DATE_FORMAT(date_of_manufac,%Y),%Y)<2010;
这里我添加了函数DATE_FORMAT
and STR_TO_DATE
。
尝试上面的查询。
一种方法是从日期中提取年份:
where extract(year from date_of_manufac) < 2010;
更一般地,只需使用日期比较:
where date_of_manufac < date '2010-01-01'
这是更可取的,因为它可以在列上使用索引——如果索引可用并且索引的使用适合查询。