甲骨文 10g 中的年份和月份



我的日期格式为2014年3月。如何获取数字格式的月份和年份以在 Oracle 10g 查询中进行比较。

    <?php
    $date = "March 2014";
    ?>

我试图得到的查询是

    select EMP_NAME where month = "03" and year = "2014".

这是我的表结构

    EMP_ID  |  EMP_NAME  |  C_DATE
       1    |     ABC    |  01-FEB-14
       2    |     XYZ    |  03-MAR-14 

注意:我正在用 php 编写编码

对于可优化的谓词,应避免更改每一行数据以适应单个参数。

相反:调整参数以适应数据

select
*
from your_table
where C_DATE>= to_date('March 2014','MON YYYY', 'NLS_DATE_LANGUAGE = American') 
and C_DATE< add_months(to_date('March 2014','MON YYYY', 'NLS_DATE_LANGUAGE = American'),1)

请注意,数据 - C_DATE - 不受任何函数的影响,但您可以获得所需的结果(2014 年 3 月的所有记录);此方法允许在字段上使用索引C_DATE以提高查询效率。

您可以尝试使用TO_CHAR(date, 'MON')月份和TO_CHAR(date, 'YYYY')年份。查询将是

select EMP_NAME where TO_CHAR(C_DATE, 'MON') = month and TO_CHAR(C_DATE, 'YYYY') = year

在php中,您必须管理日期以获取年份和月份并将它们传递给查询

$dt = new DateTime("March 2014");
$month = $dt->format("m"); //03
$year = $dt->format("Y"); //2014
//Here connect to the db..
$db->query("SELECT EMP_NAME FROM yourTable WHERE TO_CHAR(C_DATE, 'MON') = :month AND TO_CHAR(C_DATE, 'YYYY') = :year");
$db->bindParam(":month", $month);
$db->bindParam(":year", $month);

最新更新