我的日期格式为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);