UniData 中是否有相当于 sql server getdate() 函数的功能?我希望能够查询这样的表:
SELECT GETDATE() AS EXPORT_DATE, * FROM TABLE
有两种方法可以做到这一点——一种更“标准”,另一种更灵活但略显尴尬。
1) 创建一个返回当前日期的 I 描述符,如下所示:
:AE DICT TABLE EXPORT_DATE
001 I
002 DATE()
003 D4/
004
005 10R
006 S
进而
:LIST TABLE EXPORT_DATE
2)使用查询语言的Unidata“风味”避免创建DICT项目,但打字有点尴尬,您需要在ECLTYPE U中(或使用小写的命令(list,sort)强制ECLTYPE U ):
:list TABLE EVAL "OCONV(DATE(),'D4/')" COL.HDG "EXPORT_DATE"
就个人而言,我几乎总是在用于报告的主表中有 TODAY、COUNTER、CURR.USER 等 DICT 项目。从 SQL 的角度来看,您可以将 I-Descriptor 视为小型迷你视图,它只返回一列。 这是一组有趣的示例,说明了可能返回的日期格式。
: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 位有效数字。