比较pl/sql中的日期



我想编写一个函数,将年份作为参数,并返回在该年份出生的人。但是我的人员表格式像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' );

(在日期列上使用一系列日期,而不是使用EXTRACTTO_CHAR,因为这允许Oracle在日期列中使用索引。(

如果您的列的字符串数据类型为4位年份:

SELECT *
FROM   table_name
WHERE  string_column LIKE :year || '-%'

(不要只是连接%,因为如果你有历史年份,那么尝试匹配年份200也会匹配年份2000。(

如果列的数据类型是字符串,则可以使用:

where col like :year || '%'

如果数据类型是日期或时间戳,则可以使用:

where extract(year from col) = :year

相关内容

  • 没有找到相关文章

最新更新