我有一个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?
希望这有帮助。