我的日期格式为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中的编码
答案 0 :(得分:1)
对于可搜索的谓词,您应该避免更改每一行数据以适应单个参数。
相反:调整参数以适合数据
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上使用索引以提高查询效率。
答案 1 :(得分:-1)
您可以尝试使用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);