使用最大日期查询你好,
我有一个根据日期列中的最大日期每周更新的文件。 每周我都会打开文件,查看当前的最大日期,然后查询最大日期之后的数据。 是否可以直接取出最大日期并将其插入到我正在使用的查询中?
目前我的文件已更新至 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开发