sql - 如何在 Oracle 数据库中插入日期和时间?
问题描述
我的 TRANSACTION 表中有一个名为 TxDate 的列和另一个名为 TxTime 的列。我无法理解 TO_DATE 函数的工作原理。从我所做的研究来看,以下陈述看起来是正确的。有人可以帮助我了解如何在 Oracle 中添加日期和时间。干杯
INSERT INTO TRANSACTION
VALUES(
TxNbr_Seq.nextval,
'X',
1000001,
123.45,
TO_DATE('2019/05/1', 'yyyy/mm/dd'),
TO_DATE('12:00', 'HR:MI'),
'101'
);
解决方案
不要将日期和时间组件存储在单独的表中。
首先,Oracle 没有time
数据类型:它只有date
存储日期和时间组件的数据类型。
其次,以这种方式进行通常效率低下。迟早,您最终会连接日期和时间组件,以便能够执行正确的日期比较。将两者存储在一起要简单得多,如果需要单独显示它们,则使用日期函数。
所以,只需要一列来存储日期和时间,比如txDate
,然后:
INSERT INTO TRANSACTION -- better enumerate the target columns here
VALUES(
TxNbr_Seq.nextval,
'X',
1000001,
123.45,
TO_DATE('2019/05/01 12:00', 'yyyy/mm/dd hh24:mi'),
'101'
);
请注意,Oracle 使用hh24
(或hh12
,或者hh
如果您使用 AM/PM 格式)指定小时格式,而不是hr
.
那么如果需要分别显示日期和时间,可以使用日期格式化函数:
to_char(txDate, 'yyyy/mm/dd') txDay,
to_char(txDate, 'hh24:mi' ) txTime
推荐阅读
- mysql - 如何调试“SQL状态42000:表中不存在键列'categoria_marca'”的错误
- angular - 根据数据结果重复请求
- python - 将 csv 值读入 2d numpy 数组的问题
- python - Python中的嵌套循环
- python - 在 Python 中计算移动平均值时出现可逆性错误
- java - CMS 如何决定何时收集 SoftReference?
- epplus - 当文本值中有正斜杠时,EPPlus 读取日期列不正确
- sql - 如何使用 GROUP BY 从 SQL 中的 3 个表中选择数据?
- ios - 反应原生 xcode 项目不在 iphone 上构建
- google-cloud-platform - Google Cloud Composer 变量不会传播到 Airflow