【问题标题】:Comparing Date from ORACLE db with current date将 ORACLE db 中的日期与当前日期进行比较
【发布时间】:2017-08-07 12:46:59
【问题描述】:

我在将 Oracle 数据库中的日期与当前日期和时间进行比较时遇到问题 这是我的查询:Select name,adress,delivery_date from business_db delivery_date 列以这种格式显示日期:2010-07-21 17:00:00.000

我只需要显示优于当前日期的数据库行

我用它来获取当前日期和时间:

date_default_timezone_set('Europe/Paris');
$date = date('d-m-Y H:i:s');

并尝试使用简单的“ where delivery_date > $date ”比较日期 但它没有工作

谢谢

【问题讨论】:

  • 'dd-mm-YYYY HH:mi:ss' 似乎是一种有效的格式,其中 ('d-m-Y H:i:s');似乎不是。所以Select name,adress,delivery_date from business_db WHERE delivery_date>=to_date('2016-07-21 17:00:00', 'YYYY-MM-DD HH:MI:SS')
  • 我不熟悉 PHP,但我认为 PHP 和 Oracle 日期之间没有任何自动转换,因此您需要准确检查 SQL 在传递 PHP 日期时看到的内容以及什么双方的因素都会对其产生影响,例如nls_date_format。
  • 为什么不在查询中使用current_date 并让oracle 来做这件事?
  • @xQbert 感谢您的回答,但我试图将 delivery_date 字段与当前日期(系统日期)进行比较,而不是 2016-07-21 ...,但您可以看到输出的查询还显示 3 位数的毫秒数,这使得比较两者变得更加困难
  • @WilliamRobertson 谢谢

标签: php oracle date


【解决方案1】:

你可以使用 sysdate

select Select name,adress,delivery_date from business_db
    where to_date('08.08.2017 12:30','DD.MM.YYYY HH24:MI') > sysdate;

sysdate 是 DATE 格式的 oracle 系统日期。

使用 php 变量应该是这样的

php部分:

$date = '08.08.2017 12:30';

sql部分:

select Select name,adress,delivery_date from business_db
    where to_date($date,'DD.MM.YYYY HH24:MI') > sysdate;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多