使用最大日期查詢你好,
我有一個根據日期列中的最大日期每週更新的文件。 每週我都會打開文件,查看當前的最大日期,然後查詢最大日期之後的資料。 是否可以直接取出最大日期並將其插入我正在使用的查詢中?
目前我的文件已更新至 8/15/2019,我想查詢 > 8/15/2019 的資料來更新文件。
回覆:使用最大日期查詢@pmroz
謝謝pmroz。 簡單明了的程式碼。 很有幫助。
回覆:使用最大日期查詢如果您使用的是 Oracle,您可能會考慮在日期欄位上使用 TO_DATE,以便日期格式明確。如果您使用的是 SQL Server,則 yyyy-mm-dd 是預設格式,因此無需轉換。
dv = today();
dvf = Format( dv, "yyyy-mm-dd" );
sql = Eval Insert( "select * where purchase_date > TO_DATE('^dvf^', 'yyyy-mm-dd')" );
show(sql);回覆:使用最大日期查詢嗨布萊恩,
實際上,我可以透過編輯您已經提供的行來使其運行。 我剛剛在 val 部分添加了一行以包含單引號。 下面用單引號更新了 val,如果需要,請隨意批評。
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "yyyy-mm-dd" );
dvfs = ("'" || dvf || "'");
Show( dvfs );
sql = Eval Insert( "select * where purchase_date > ^dvfs^" );
回覆:使用最大日期查詢嗨布萊恩,
我想在日期周圍添加單引號(需要從特定資料庫查詢)。 我可以直接將單引號加入到 eval 中嗎?
例子:
sql = Eval Insert( "select * where purchase_date > '^dvf^'" );
回覆:使用最大日期查詢修改我之前的範例,你可以這樣做:
val = Column( 1 )[1];
dv = As Date( val );
dvf = Format( dv, "m/d/y" );
Show( dvf );
sql = Eval Insert( "select * where purchase_date > ^dvf^" );
Show( sql );
回覆:使用最大日期查詢謝謝布萊恩,這按預期工作。 是否可以將 val 重新格式化為數字格式(例如 12/31/2010 或 31/12/2010)? 日期中包含 Dec 等字元不適用於我的查詢。
回覆:使用最大日期查詢使用我之前的範例,如果您繼續:
val = 列( 1 )[1];
顯示(值);
顯示(作為日期(val));
sql = eval insert("select * where buy_date > ^As Date(val)^");
顯示(sql);
然後日誌顯示:
值=3376598400;
由於日期(val)= 2010 年 12 月 31 日;
sql =“選擇*其中購買日期> 2010年12月31日”;
這樣你就可以運行產生的sql。
回覆:使用最大日期查詢您能否展示如何將最大日期從第一個表插入下一個 SQL 中?
我正在使用的表有一列標記為Purchase_Date,這是我為了從資料庫查詢新資料而要做的最大事情。 查詢的範例如下:
資料庫=建立資料庫連接( “DSN=產品;UID=” ||IDC|| “;密碼=” ||透過|| “;模式=共享;DBALIAS=產品” );
資料_sql =評估插入( 」
選擇 CUST_NM、PURCHASE_AMT、PURCHASE_DATE、PURCHASE_TM、ORDER_NUM、Product_NM、Product_TYP、COUNTRY_CD、APPROVE_DECLINED
來自 PURCHASE_DATA
其中 PURCHASE_DATE > '2019-08-16'
並且 PRODUCT_TYP = 'Y'
和 ('0840') 中的 COUNTRY_CD
和 APPROVE_DECLINED ='A'" );
資料_dt =執行sql (dbc,data_sql);
關閉資料庫連接(資料庫);
回覆:使用最大日期查詢在不了解具體細節的情況下,您似乎應該能夠將這一切保留在一個查詢中。但是,您始終可以使用查詢產生器對相關表中的日期執行 Max 操作,然後提取該值以取代另一段 SQL 腳本。來自查詢產生器的腳本範例用於處理電影資料庫、租賃表,其中日期列具有租賃日期,發出的腳本如下所示:
New SQL Query(
Connection( "ODBC:DSN=SQLServer SQBTest;UID=sa;PWD=%_PWD_%;APP=JMP;WSID=machine;DATABASE=SQBTest;" ),
QueryName( "g6_Rentals" ),
Select(
Column(
"OrderDate",
"t1",
Alias( "Maximum-OrderDate" ),
SavedJMPName( "OrderDate" ),
Aggregation( "Maximum" ),
JMP Name( "Maximum-OrderDate", 0 ),
Numeric Format( "m/d/y", "-1", "NO", "" )
)
),
From( Table( "g6_Rentals", Schema( "SQBTest" ), Alias( "t1" ) ) )
) << Run Foreground();
val = Column( 1 )[1];
Show( As Date( val ) );
這裡只是對日期列進行最大值聚合。產生的表有一行和一列,我們從中取出值並將其顯示給日誌以確保它是正確的。
布萊恩·科科倫
JMP開發