Abap 如何通过本机SQL插入和查看日期值?

Abap 如何通过本机SQL插入和查看日期值?,abap,native-sql,Abap,Native Sql,我使用以下ABAP代码插入订单: EXEC SQL. INSERT INTO order VALUES('1','17/12/2012') //order id,order date ENDEXEC. 但我有一个运行时错误。我尝试将日期更改为SYSDATE EXEC SQL. INSERT INTO order VALUES('1',SYSDATE) ENDEXEC. 该错误已修复,但在尝试从订单表中选择订单日期时无法获取任何值 DATA: oID(255). DATA: o

我使用以下ABAP代码插入订单:

EXEC SQL.
    INSERT INTO order VALUES('1','17/12/2012') //order id,order date
ENDEXEC.
但我有一个运行时错误。我尝试将日期更改为
SYSDATE

EXEC SQL.
    INSERT INTO order VALUES('1',SYSDATE)
ENDEXEC.
该错误已修复,但在尝试从订单表中选择订单日期时无法获取任何值

DATA: oID(255).
DATA: oDate(255).
//select a order details where order id='1', and assign to oID,oDate
Write: /1 'Order date: ',oDate.
Write: /1 'Order ID: ',oID.
输出:

Order date: 
Order ID: 1

如果要使用本机SQL操作数据,则必须使用底层DBMS的本机SQL方言。如果您不知道这一点,就不应该使用本机SQL

如果要使用本机SQL操作数据,必须使用底层DBMS的本机SQL方言。如果您不知道这一点,就不应该使用本机SQL

在变量前面放一个冒号(:):

EXEC SQL.
  INSERT INTO order VALUES('1', :sy-datum)
ENDEXEC.
将冒号(:)放在变量前面:

EXEC SQL.
  INSERT INTO order VALUES('1', :sy-datum)
ENDEXEC.

为什么要使用NativeSQL而不是OpenSQL?使用NativeSQL的唯一原因是,当您想使用数据库后端独有的任何功能时,但您在这里所做的似乎很普通。我明白您的意思,但如何在NativeSQL中插入日期值?为什么要使用NativeSQL而不是OpenSQL?使用NativeSQL的唯一原因是当您想使用数据库后端独有的任何功能时,但您在这里所做的似乎很普通。我明白您的意思,但如何在NativeSQL中插入日期值?即使您是对的,这些尖刻的注释也没有特别的帮助,你不同意吗?雷内:这可能是一个不可避免的副产品,因为人们认为他们真的需要原生SQL、生成子例程池以及诸如此类的东西,他们修复了一些遗留下来的混乱。。。对不起…我知道你的意思-我敢说大多数ABAP代码都是一团糟。。?幸运的是,也有一些活跃的ABAP程序员真正了解他们的东西:)@René:大多数ABAP代码都是普通的,但使用不适当的技术通常会使大型的FSCKUP变得更糟。“我不理解这个问题,所以我可能不得不使用我也不理解的语句”或类似的说法……即使你是对的,这些尖刻的评论也没有特别的帮助,你不同意吗?雷内:这可能是一个不可避免的副产品,因为人们认为他们真的需要原生SQL、生成子例程池以及诸如此类的东西,他们修复了一些遗留下来的混乱。。。对不起…我知道你的意思-我敢说大多数ABAP代码都是一团糟。。?幸运的是,也有一些活跃的ABAP程序员真正了解他们的东西:)@René:大多数ABAP代码都是普通的,但使用不适当的技术通常会使大型的FSCKUP变得更糟。“我不理解这个问题,所以我可能不得不使用我也不理解的语句”或类似的东西……这对我来说是一个有用的答案,我很快就得到了这个答案。但无论如何,非常感谢;)这对我来说是一个有用的答案,我很快就得到了这个答案。但无论如何,非常感谢;)