我想编写一个函数,将年份作为参数,并返回在该年份出生的人。但是我的人员表格式像1993-01-06 00:00:00,所以我如何比较日期并在sql中返回过滤后的人员?
假设表中有一列的数据类型为DATE
,则:
SELECT *
FROM table_name
WHERE date_column >= TO_DATE( :year || '-01-01', 'YYYY-MM-DD' )
AND date_column < TO_DATE( ( :year + 1 ) || '-01-01', 'YYYY-MM-DD' );
(在日期列上使用一系列日期,而不是使用EXTRACT
或TO_CHAR
,因为这允许Oracle在日期列中使用索引。(
如果您的列的字符串数据类型为4位年份:
SELECT *
FROM table_name
WHERE string_column LIKE :year || '-%'
(不要只是连接%
,因为如果你有历史年份,那么尝试匹配年份200
也会匹配年份2000
。(
如果列的数据类型是字符串,则可以使用:
where col like :year || '%'
如果数据类型是日期或时间戳,则可以使用:
where extract(year from col) = :year