我在SAS EG中将日期时间插入到数据库表名(TestTable)中有一个小问题。在TestTable的日期字段定义为在SAS中的SQL表中插入日期/时间
Name = EnteredDate
Type = Date
Length = 8
Format = DATETIME22.3
Informat = DATETIME22.3
Name = LastUpdateDate
Type = Date
Length = 8
Format = DATETIME22.3
Informat = DATETIME22.3
我现有的代码如下所示,在这里我使用select语句插入,而不是一个值的语句。这里是调用我根本不使用的PrepTable,但是select语句允许我使用datetime()函数,该函数可以完美地插入日期时间而不会有任何问题。请看下图:
INSERT INTO LIBNAME.TestTable (Statuscode, EnteredDate, LastUpdateDate)
Select '2', datetime(), datetime()
From work.PrepTable
我要做到以下几点:
INSERT INTO LIBNAME.TestTable (Statuscode, EnteredDate, LastUpdateDate)
VALUES ('2', datetime(), date time())
这是更为有效的我想既然我没有查询work.PrepTable。但datetime()在值语句中不起作用。我尝试了以下变化
INSERT INTO LIBNAME.TestTable (Statuscode, EnteredDate, LastUpdateDate)
VALUES ('2', "&sysdate9:00:00:00"dt,"&sysdate9:00:00:00"dt)
此方法没有输入时间,只有输入的日期和日期也是错误的。我尝试另一个变化是下面这个网站
INSERT INTO LIBNAME.TestTable (Statuscode, EnteredDate, LastUpdateDate)
VALUES ('2', &today_dttm,&today_dttm)
其中& today_dttm从来源四处寻找后:
%let today_dttm=%sysfunc(dhms(%sysfunc(today()), 0, 0, 0));
这并没有努力以及无论是作为我不断收到才刚刚日期插入,而不是时间。是否有正确的方法输入当前日期和时间,而不必使用Select语句和datetime()组合来调用insert语句。
我是一个新手萨斯和任何输入将不胜感激。 谢谢
谢谢乔,这是非常有帮助的。我从来没有想过使用数据步骤来插入。我会给这个镜头。在这里大声想一想,如果我不得不插入来自可能具有这50列的多行的预备表的50列数据,这个插入数据步骤会变得具有挑战性吗?在这种情况下,我将不得不使用interator,然后在迭代器中有数据步骤来插入每一行。如果我的思路不正确,请纠正我。给你一个绿色检查和对你的答案有帮助的+1 – vbala2014 2014-11-05 21:05:39
你可以简单地插入整个数据集,使用'PROC APPEND'(或其他方法,但通常是最快和最简单的方法)。您甚至不必指定列(只要它们的名称匹配 - 不必是相同的顺序,只是相同的实际名称)。 – Joe 2014-11-05 21:06:43
好的再次感谢,我会给这个去使用更大的数据集,看看我是否可以使用迭代器与proc追加时间的性能。非常感谢您的帮助 – vbala2014 2014-11-05 21:08:56