【发布时间】:2021-12-05 12:58:59
【问题描述】:
我有这段代码,它给定一个 JSON 数组将它插入一个表中:
INSERT INTO log (
"uuid",
"date",
"msg",
"level"
)
WITH t ( log ) AS (
SELECT
JSON_QUERY('[{"uuid": "20000000-0000-0000-0000-000000000000", "date": "2021-10-18T13:49:15+01:00", "msg":"aaaa", "level": "debug" },
{"uuid": "20000000-0000-0000-0000-000000000000", "date": "2021-10-18T13:49:15+01:00", "msg":"bbbb", "level": "debug" }]'
, '$')
FROM
dual
)
SELECT
"uuid",
"date",
"msg",
"level"
FROM
t
CROSS JOIN
JSON_TABLE ( log, '$'
COLUMNS (
NESTED PATH '$[*]'
COLUMNS (
"uuid" VARCHAR2 ( 36 ) PATH '$.uuid',
"date" DATE PATH '$.date',
"msg" VARCHAR2 ( 1024 ) PATH '$.msg',
"level" VARCHAR2 ( 5 ) PATH '$.level'
)
)
)
这只是将日期(2021-10-18)保存到数据库中,而不是时间。如何保存日期和时间?
【问题讨论】:
-
日期存储为比特包。时间是一直保存的,但是要显示正确的
nls_date_format。 -
@RobertoHernandez 虽然是这样,但db<>fiddle 并没有发生这种情况。
-
@RobertoHernandez @MTO 解决方案对我有用,奇怪的是它适用于
timestamp但不适用于date,因为日期也支持时间! -
@user5507535,我用
date发布了一个适合我的解决方案 -
@MTO,我为
date列发布了一个解决方案,尽管我认为你的时间戳更干净。
标签: sql json oracle datetime oracle12c