Oracle控制台中的相同SQL工作,而不是PHP

时间:2014-05-13 10:44:25

标签: php sql oracle date

这个sql有问题:

select DATE_FIELD from table where
DATE_FIELD >= to_date(to_char(sysdate, 'yyyy/mm/dd'), 'yyyy/mm/dd')
and
DATE_FIELD <= to_date(to_char(sysdate, 'yyyy/mm/dd')+1, 'yyyy/mm/dd')

我想从今天00:00:00到明天00:00:00获取日期。

DATE_FIELD字段的DATA TYPE为DATE

在Tora / Toad工作,在php中没有。

错误代码:

PHP Warning:  oci_execute(): ORA-01722: invalid number

1 个答案:

答案 0 :(得分:1)

您的查询:

select DATE_FIELD
from table
where DATE_FIELD >= to_date(to_char(sysdate, 'yyyy/mm/dd'), 'yyyy/mm/dd') and
      DATE_FIELD <= to_date(to_char(sysdate, 'yyyy/mm/dd')+1, 'yyyy/mm/dd')
----------------------------------------------------------^

我不知道这会在任何地方发挥作用,因为to_char( . . . ) + 1会失败。好吧,我可以想象一个神秘的设置,它会识别'yyyy/mm/dd'日期格式并将字符串转换回添加1的日期。

我建议更简单:

where DATE_FIELD >= trunc(sysdate) and DATE_FIELD < trunc(sysdate + 1)