将查询中的oracle日期与PHP进行比较
我想比较php中从oracle数据库检索到的日期。但我不知道如何将月份名称(如Sep)转换为Sep。我不知道如何将月份转换为大写字母。我想将2015-09-01 formate转换为2015年9月3日将查询中的oracle日期与PHP进行比较,php,oracle,date,datetime,Php,Oracle,Date,Datetime,我想比较php中从oracle数据库检索到的日期。但我不知道如何将月份名称(如Sep)转换为Sep。我不知道如何将月份转换为大写字母。我想将2015-09-01 formate转换为2015年9月3日 //sDate: 2015-09-01 eDate: 2015-09-03 $date1=date('d-M-Y', strtotime($sDate)); $date2=date('d-M-Y', strtotime($eDate)); // CREATEDATE: 03-SEP
//sDate: 2015-09-01 eDate: 2015-09-03
$date1=date('d-M-Y', strtotime($sDate));
$date2=date('d-M-Y', strtotime($eDate));
// CREATEDATE: 03-SEP-15 02.44.42.000000 PM
查询:
$stid = oci_parse($conn, "SELECT * FROM table1 WHERE CAST(CREATEDATE AS DATE) between '".$sDate."' AND '".$eDate."'");
错误:
Warning: oci_execute(): ORA-01861: literal does not match format string
因此,您有一个日期字符串,如:“2015-09-01”,您希望将其转换为“01-09-2015”,以便在查询中使用 如果您想调试php中如何处理日期转换的问题,请尝试执行以下操作:
list($year,$month,$day)=explode('-',$date);
$months = ['','JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];
$date = implode('-',$day,$months[$month],$year);
然后尝试运行查询。如果只需要更改日期中元素的顺序,则不需要获取字符串、将其转换为日期(unix时间戳)并将其转换回字符串。如果你想操纵你的日期,添加或删除一些时间或类似的东西,你必须遵循你的方法
如果查询仍有错误,并且您确信数据库中的日期是以该模式存储的,而不是Oracle中查询语法中的问题,则可以使用to_date()函数将字符串转换为日期。以及使用to_char()函数将日期转换为字符串 范例
to_date('01-JAN-2015','DD-MON-YYYY')
将返回日期类型的值
现在,在查询中,必须确保“between”语句中的值是日期值。确保这一点的唯一方法是将$sDate设为一个atring值,并使用to_date函数。
假设您的日期字符串格式为2015年1月1日
$stid = oci_parse($conn,
"SELECT *
FROM table1
WHERE CAST(CREATEDATE AS DATE)
between to_date('".$sDate."','DD-MON-YYYY')
AND to_date('".$eDate."','DD-MON-YYYY')");
另请参见有关日期格式的Oracle文档。
请你把你的问题说得更清楚一点好吗。请检查数组中的月份名称是否符合预期