【问题标题】:UniData Current Date FunctionUniData 当前日期函数
【发布时间】:2018-03-01 17:14:48
【问题描述】:

UniData 中是否有相当于 sql server getdate() 函数的功能?我希望能够像这样查询表:

SELECT GETDATE() AS EXPORT_DATE, * FROM TABLE

【问题讨论】:

    标签: u2 unidata


    【解决方案1】:

    有两种方法可以做到这一点 - 一种更“标准”,另一种更灵活但略显笨拙。

    1) 创建一个返回当前日期的 I 描述符,如下所示:

    :AE DICT TABLE EXPORT_DATE
    001 I
    002 DATE()
    003 D4/
    004
    005 10R
    006 S
    

    然后

    :LIST TABLE EXPORT_DATE
    

    2) 使用查询语言的 Unidata "flavor" 可以避免创建 DICT 项目,但输入起来有点尴尬,您需要在 ECLTYPE U 中(或使用命令 (list, sort) in lower强制 ECLTYPE U):

    :list TABLE EVAL "OCONV(DATE(),'D4/')" COL.HDG "EXPORT_DATE"
    

    就我个人而言,我几乎总是在用于报告的主表中有 TODAY、COUNTER、CURR.USER 等 DICT 项目。从 SQL 的角度来看,您可以将 I-Descriptor 视为小型迷你视图,它只返回一列。 Here's 一组有趣的例子,关于可能返回的日期格式。

    【讨论】:

      【解决方案2】:
      :AE VOC TODAY
      001:  I
      002:  DATE()
      003:  D4/
      004:
      005:  10R
      006:  S
      

      通过将其放入 VOC,现在该环境中定义的所有文件都可以访问它。

      您现在可以列出 TRAN.DATE = TODAY 的交易

      这会将 TRANSACTIONS 文件中的字段 TRAN.DATE 与今天的日期进行比较,该日期是从日期函数 DATE() 返回的。 UniData 的所有 Pick 语言都使用内部日期,即 1967 年 12 月 31 日(Dick Pick 的女儿出生的那一年)过去多少天。第 3 行的转换“D4/”将该内部日期转换为显示时为 MM/DD/CCYY 格式。将“/”更改为“-”使其看起来像 MM-DD-CCYY,将 4 更改为 2 将更改日期以仅显示最后 2 位有效数字。

      【讨论】:

        猜你喜欢
        • 2016-07-08
        • 2015-07-26
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多