Plsql PL/SQL如何在proc中比较日期

Plsql PL/SQL如何在proc中比较日期,plsql,compare,date,Plsql,Compare,Date,my DB中的日期存储如下:“2/6/2009 6:30:00 PM”。将此日期与存储过程中从UI传入的日期进行比较的正确方法是什么 试着做一些像 日期时间或

my DB中的日期存储如下:“2/6/2009 6:30:00 PM”。将此日期与存储过程中从UI传入的日期进行比较的正确方法是什么

试着做一些像 日期时间<'2/6/2009 07:30:00',
但这不起作用。有什么建议吗?谢谢大家!

使用TO_DATE函数将文本转换为日期

像这样:

to_date('2/6/2009 6:30:00 PM', 'MM/DD/YYYY HH12:MI:SS AM')
如果使用字段名而不是常量字符串,则会得到字段值,并转换为日期。您可以在查询中比较它,或者返回它并使用normal>或<运算符在PL/SQL代码中进行比较

但当然,最好将日期另存为日期。:)如果愿意,可以进行逐步转换:

首先,向表中添加一个日期列,并编写一个触发器 每当输入日期时更新stringdate字段

  create or replace trigger DATESYNC before insert or update of YOURNEWDATEFIELD
  on YOURTABLE for each row
  begin
    :new.CURRENTSTRINGDATE := to_char(:new.YOURNEWDATEFIELD, 'MM/DD/YYYY HH12:MI:SS AM');
  end;
然后,编辑用于在日期字段中输入日期的GUI 而不是字符串字段。所有其他代码仍将使用 字符串字段并将继续工作。 编写一条update语句,该语句使用
将数据转换为日期

然后,您可以逐个消除读取字符串的所有代码 字段,并将其更新为使用日期字段。所有尚未转换的代码仍将工作,因为触发器仍会更新字符串字段

转换完所有代码后,删除字符串字段和触发器

这将使您的代码更快,数据更紧凑,查询将更好地利用日期字段上的索引