问题描述
我有一个SQL查询作为:
这里
所以,如果我有dataframe与datetime对象,我把它推到json,我得到它在posix,因此日期在oracle仍然是datetime不会等于它。
当我在dataframe中看到datetime时,我尝试将其更改为字符串为 _date (% y-% m-% d,YYYY-MM-DD),但它的非数字,因此绑定不起作用。
有什么办法可以绕过它,这样我就不必更改我的sql查询 (sql查询可以更改为TO_DATE,我可以简单地将datettime作为字符串传递)
With jtable as (:inp) Select * from table t,jtable where t.DATE = jtable.DATE
这里
inp是一个dataframe,我通过转换为json和eveything来照顾,它工作得很好,除非它必须处理datetime对象。
所以,如果我有dataframe与datetime对象,我把它推到json,我得到它在posix,因此日期在oracle仍然是datetime不会等于它。
当我在dataframe中看到datetime时,我尝试将其更改为字符串为 _date (% y-% m-% d,YYYY-MM-DD),但它的非数字,因此绑定不起作用。
有什么办法可以绕过它,这样我就不必更改我的sql查询 (sql查询可以更改为TO_DATE,我可以简单地将datettime作为字符串传递)
jason-data == [{"TEST_DATE"16163612361}]当dataframe具有TEST_DATE = pd.timestamp(2019、6、28) 或其他内容时。有什么办法可以解决吗?专家解答
如果您使用的是12c,则可以使用JSON * 函数提取属性。
有了这些,数据库可以隐式地值到日期,前提是文档将日期格式化为ISO 8601标准。
例如:
因此,如果你的JSON包含任何其他格式的日期,你必须to_date的值。
如果你在11g上,你将不得不以其他方式解析你的JSON (例如使用APEX_JSON包)。但你几乎肯定必须显式转换值以使它们成为日期。
有了这些,数据库可以隐式地值到日期,前提是文档将日期格式化为ISO 8601标准。
例如:
with rws as (
select '{
"dates" : [
"2019-07-15",
"15-JUL-2019",
"2019-07-15 02:11:27 PM",
"2019-07-15 14:11:27",
"2019-07-15T14:11:27",
"2019-07-15T14:11:27Z",
"2019-07-15T14:11:27+00:00"
]
}' doc
from dual
)
select j.*
from rws, json_table (
doc, '$'
columns
nested path '$.dates[*]'
columns (
dt_str varchar2 path '$',
dt_dt date path '$' null on error
)
) j;
DT_STR DT_DT
2019-07-15 15-JUL-2019 00:00:00
15-JUL-2019
2019-07-15 02:11:27 PM
2019-07-15 14:11:27
2019-07-15T14:11:27 15-JUL-2019 00:00:00
2019-07-15T14:11:27Z 15-JUL-2019 00:00:00
2019-07-15T14:11:27+00:00 15-JUL-2019 00:00:00 因此,如果你的JSON包含任何其他格式的日期,你必须to_date的值。
如果你在11g上,你将不得不以其他方式解析你的JSON (例如使用APEX_JSON包)。但你几乎肯定必须显式转换值以使它们成为日期。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




