gx +java 日期型类型的变量在oracle中的注意事项

来源:互联网 发布:windows ad管理工具 编辑:程序博客网 时间:2024/04/29 03:07

我们在开发系统经常要用到日期型变量,我就以在oracle 9.2中举例
&date1  date
&date2  date

如何给变量赋值   &date1 = ctod('2007/07/01')
ctod('字符串') 这个函数的中字符串格式有系统模型可以设置  File>Edit Model>Properties 中Date format in CtoD funtion

在oracle中,date 的值如果是 0001-01-01 或 空值null

&date2 = DATE2 //从数据读到

或  &data2 = nullvalue(&data2)

这个值用msg(&date2.toString()) 一下,得不到值 会显示   -  - ,表示没有值

问大家  &d2 =  CtoD('2001-02-03')
             msg(&d2.ToString())

这个结果是什么弹出什么对话框?结果是  01-02-03

我们再做假设  &d2 = nullvalue(&d2)

if &d2.isEmpty()

    msg('here1')

endif

执行后,系统会弹出对话框here1,表示&d2是空了。

但是我们注意了,在oracle中读取空数据时,isEmpty()和IsNull()是有区别的。

我们假设数据库存在值 D1 = '0001-01-01'  和 null

在procedure中:

for each

       where  D1.isEmpty()//这个条件只是过滤条件是默认值,数据还是有值,为0001-01-01,即公元1年1月1日。

       msg('D1 is 0001-01-01')

endfor

for each

      where D1.IsNull()//这个条件只是过滤条件是null,即没有任何数据的

      msg('D1 is null')

endfor

在procedure中IsEmptey()和IsNull()还是有区别的。