为什么 Oracle 将时间存储在 DATE 列中?

Ksh*_*rma 3 oracle datatypes

我有一个带有日期列的表格。我使用 JDBC 将 java.util.Date 对象保存到表中。

当我运行以下查询时,我得到日期以及时间值:

select To_CHAR(departure_date,'DD-MM-YYYY HH:MI') from service
Run Code Online (Sandbox Code Playgroud)

这告诉我日期是列也在存储时间。

这是出乎意料的。日期类型不应该像整数类型丢弃小数一样丢弃时间值吗?

Phi*_*lᵀᴹ 6

Oracle 的DATE数据类型既是 ANSIDATE又是TIME数据类型。这是一个只有 Oracle 知道其原因的设计决策。

我要补充一点,Oracle 并不是唯一不以这种方式遵循 ANSI SQL 标准的 RDBMS。

显然,您可以使用 删除时间部分TO_CHAR(departure_date,'DD-MM-YYYY')

  • 或者使用`TRUNC(departure_date)` 如果您希望保留值的日期时间性质。 (4认同)