【问题标题】:Subtracting 1 day from date variable causing errors从导致错误的日期变量中减去 1 天
【发布时间】:2020-02-28 18:40:31
【问题描述】:

我有一个使用名为 $EFFDT 的字段的 SQR 程序。它NOT在程序中显式声明为日期变量。它目前所做的是最初设置为 ''(空白),如下所示:

LET $EFFDT = ' '

$EFFDT 然后通过从名为$INPUT 的字段中读取文件来设置

read 1 into $Input:80 LET $EFFDT = substr($INPUT,53,8)

然后它重新格式化日期以使其格式为 YYYY-MM-DD

do Format-DateTime($EFFDT,$EFFDT,{Prompt-Mask},'','native')

我想在后面的过程中将 $EFFDT 设置为 $EFFDT 值减去 1 天

我在后面的过程中尝试添加的是这样的:

LET $EFFDT = DATEADD($EFFDT, 'day', -1)

当我尝试运行 SQR 时,我收到 SQR 4045 错误(函数或运算符 'dateadd' 需要日期参数'

根据我的阅读,这意味着需要将 $EFFDT 变量声明为日期变量。所以我明确地将这个变量声明为一个日期,但是当程序运行这部分代码时它会出错:

LET $EFFDT = ' '

SQR 1944 - 日期“ ”不是 SQR_DB_DATE_FORMAT 指定的格式或下面列出的可接受格式之一......

所以我不确定如何继续解决原始错误或上面的第二个错误。我最终需要使用 $EFFDT - 1(day) 作为 SQL 插入命令中的字段。任何帮助表示赞赏!

【问题讨论】:

    标签: peoplesoft sqr


    【解决方案1】:

    试试这个

    LET $EFFDT = ' '
    ! ...
    LET $EFFDT = substr($INPUT,53,8)  
    ! At this point, I assume $EFFDT looks something like 20200228.  If not, change the mask below
    LET $RESULT = DATEADD(STRTODATE($EFFDT, 'YYYYMMDD'), 'day', -1)
    

    看来您必须在与DATEADD 相同的行上执行STRTODATE。例如,下面的代码对我不起作用

    LET $EFFDT = ' '
    ! ...
    LET $EFFDT = substr($INPUT,53,8)  
    ! At this point, I assume $EFFDT looks something like 20200228.  If not, change the mask below
    LET $TEMPDT = STRTODATE($EFFDT, 'YYYYMMDD')
    LET $RESULT = DATEADD($TEMPDT, 'day', -1)
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      相关资源
      最近更新 更多