Azure 数据工厂.Azure SQL DWH 中的查找日期,在 Oracle Query 中使用



我有一个Oracle数据库,我必须将dat从这个数据库加载到Azure SQL DWH。这是每天完成一次。在管道开始时,我首先在 SQL DWH 上查找以查找最新日期。结果类似于"2015-10-25"。 我想使用此日期查询 Oracle 数据库。但是我发现,通过在 Oracle 上尝试查询,以下代码不起作用:

Select * from Table 1 where day = '2015-10-25'

"日"列中的日期类似于 25-10-15 (日-周一-YY(。

我颤抖着以下where子句:

where day = TO_DATE('2015-10-25','DD-MON-YY')

但是后来我得到错误:"文字与格式字符串不匹配">

我真的不知道如何让Oracle理解这种T-SQL日期格式。

您的 Oracle 列是date数据类型。 连接到 Oracle 数据库并针对该日期列编写查询时,您将看到其默认格式DD-MON-YY,符合此参考。

您可以通过运行ALTER SESSION命令来覆盖此设置,例如

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY MM DD';

但这只是在那个本地会话中。 数据仍然以相同的方式存储在 Oracle 中,只是您查看数据的方式正在发生变化。

在 Azure 数据工厂 (ADF v2( 和示例中,你正在处理字符串。 因此,必须确保传入的任何参数的格式正确或设置为正确的数据类型。 Oracle 函数TO_DATE将字符串转换为日期数据类型。 因此,当传入格式字符串时YYYY-MM-DD这是您必须使用的格式,以使TO_DATE函数知道您正在传递的内容:

TO_DATE('2015-10-25','YYYY-MM-DD')

然后,该函数成功地将您的参数转换为date日期类型,以便与主日期列进行正确比较。

您可以尝试以下查询:

Select * from Table 1 where day = to_char (to_date('2015-10-25','YYYY-MM-DD'), 'DD-Mon-YY')

参考此博客: 如何在预言机中将 YYYYMMDD 转换为 DD-Mon-YYYY?

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新