我在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