Oracle:将日期存储在 BLOB 字段中并在需要时检索为日期
Oracle: Store date in a BLOB field and retrieve as date when needed
我正在使用此表达式将日期直接存储在 BLOB 字段中:
utl_raw.cast_to_raw(sysdate)
这很好用,但是当我需要检索这个日期时,我也无法通过下面的函数检索时间,只能检索日期。
utl_raw.cast_to_varchar2(utl_raw.cast_to_raw(sysdate))
有没有办法用时间检索我存储的日期?
PS:我知道我可以在存储之前将日期转换为具有 TO_CHAR 和日期时间格式的 varchar,但假设我现在不能这样做。
utl_raw.cast_to_raw
接受字符串,而不是日期,因此您捕获的实际上是 to_char(sysdate)
。这将使用当前的 nls_date_format
,通常类似于 DD-MON-RRRR
(和 nls_date_language
,可能是英语,但可能因用户桌面设置而异)。您需要更改默认值或指定不同的格式,例如
utl_raw.cast_to_raw(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))
我正在使用此表达式将日期直接存储在 BLOB 字段中:
utl_raw.cast_to_raw(sysdate)
这很好用,但是当我需要检索这个日期时,我也无法通过下面的函数检索时间,只能检索日期。
utl_raw.cast_to_varchar2(utl_raw.cast_to_raw(sysdate))
有没有办法用时间检索我存储的日期?
PS:我知道我可以在存储之前将日期转换为具有 TO_CHAR 和日期时间格式的 varchar,但假设我现在不能这样做。
utl_raw.cast_to_raw
接受字符串,而不是日期,因此您捕获的实际上是 to_char(sysdate)
。这将使用当前的 nls_date_format
,通常类似于 DD-MON-RRRR
(和 nls_date_language
,可能是英语,但可能因用户桌面设置而异)。您需要更改默认值或指定不同的格式,例如
utl_raw.cast_to_raw(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))