在Oracle SQL的日期字段中插入时间
是否只在“日期”类型的SQL字段中插入时间(无日期) 我尝试插入:在Oracle SQL的日期字段中插入时间,sql,oracle,date,Sql,Oracle,Date,是否只在“日期”类型的SQL字段中插入时间(无日期) 我尝试插入: 13:00 及 及 及 但是不断地得到错误: Not A Valid Month 问题在于字面意义。对于日期/时间值,Oracle希望值的格式为ddMMMyyyy。(或者,您可以使用表达式DATE'2001-01-01。文字值将被解释。)没有日期的时间似乎没有默认格式 换句话说,您可以使用cast('1/1/2001'作为日期)获得相同的错误 相反,请使用to_date()函数: select to_date('10:00'
13:00
及
及
及
但是不断地得到错误:
Not A Valid Month
问题在于字面意义。对于日期/时间值,Oracle希望值的格式为ddMMMyyyy。(或者,您可以使用表达式
DATE'2001-01-01
。文字值将被解释。)没有日期的时间似乎没有默认格式
换句话说,您可以使用cast('1/1/2001'作为日期)
获得相同的错误
相反,请使用to_date()
函数:
select to_date('10:00', 'hh:mi')
from dual
这为您提供了更大的格式灵活性
此外,正如Ben在评论中所指出的,这将为您提供指定时间的当前日期。问题在于文字。对于日期/时间值,Oracle希望值的格式为ddMMMyyyy。(或者,您可以使用表达式
DATE'2001-01-01
。文字值将被解释。)没有日期的时间似乎没有默认格式
换句话说,您可以使用cast('1/1/2001'作为日期)
获得相同的错误
相反,请使用to_date()
函数:
select to_date('10:00', 'hh:mi')
from dual
这为您提供了更大的格式灵活性
此外,正如Ben在评论中所指出的,这将为您提供指定时间的当前日期。使用SYSDATE和某个日期的提取和仅时间部分的示例…:
SELECT hh||':'||mi||':'||ss time_only_portion
FROM
(
Select
EXTRACT(hour From Cast(SYSDATE as timestamp)) hh,
EXTRACT(minute From Cast(SYSDATE as timestamp)) mi,
EXTRACT(second From Cast(SYSDATE as timestamp)) ss
From dual
)
/
SELECT EXTRACT(HOUR From t_stamp) hh
FROM
(
SELECT CAST(to_date('21/02/2012 06:10:00 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) t_stamp
FROM dual
)
/
使用SYSDATE和某个日期的提取和仅时间部分的示例…:
SELECT hh||':'||mi||':'||ss time_only_portion
FROM
(
Select
EXTRACT(hour From Cast(SYSDATE as timestamp)) hh,
EXTRACT(minute From Cast(SYSDATE as timestamp)) mi,
EXTRACT(second From Cast(SYSDATE as timestamp)) ss
From dual
)
/
SELECT EXTRACT(HOUR From t_stamp) hh
FROM
(
SELECT CAST(to_date('21/02/2012 06:10:00 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) t_stamp
FROM dual
)
/
应该怎么做?不,等等-为什么?线索在数据类型名称中。。。一言为定。日期有一天、一个月和一年……我在搜索引擎中使用了“在Oracle中存储时间”,并找到了一些关于这方面的文章。你可以试试。我还在Oracle文档中发现了一种间隔数据类型。这可能满足您的需要。Oracle中@Ben:的可能副本a
DATE
还包括时间部分。您不能在日期
列中仅插入时间。应如何操作?不,等等-为什么?线索在数据类型名称中。。。一言为定。日期有一天、一个月和一年……我在搜索引擎中使用了“在Oracle中存储时间”,并找到了一些关于这方面的文章。你可以试试。我还在Oracle文档中发现了一种间隔数据类型。这可能满足您的需要。Oracle中@Ben:的可能副本aDATE
还包括时间部分。您不能只在日期
列中插入时间。这将在表中插入当前日期,因此您必须始终记住在以后删除它。最好以一天到一秒的间隔或从午夜开始的秒数存储,就像在dupe中一样。@Ben。这是正确的。谢谢你的进一步澄清。我只是想说明为什么会发生错误。这将在表中插入当前日期,因此您必须始终记住在以后删除它。最好以一天到一秒的间隔或从午夜开始的秒数存储,就像在dupe中一样。@Ben。这是正确的。谢谢你的进一步澄清。我只是在解释为什么会发生错误。
SELECT hh||':'||mi||':'||ss time_only_portion
FROM
(
Select
EXTRACT(hour From Cast(SYSDATE as timestamp)) hh,
EXTRACT(minute From Cast(SYSDATE as timestamp)) mi,
EXTRACT(second From Cast(SYSDATE as timestamp)) ss
From dual
)
/
SELECT EXTRACT(HOUR From t_stamp) hh
FROM
(
SELECT CAST(to_date('21/02/2012 06:10:00 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) t_stamp
FROM dual
)
/