首页 > 解决方案 > 使用带有日期和时间的新创建列在 SQL 中提取数据

问题描述

我正在使用 Oracle SQL Developer 从数据库中提取数据。有一个时间戳列采用这种格式:02-SEP-19 10.31.34.315000000 AM 但我想创建 2 个新列,一个用于日期(02/09/19),一个用于 24 小时格式的时间。

有没有办法将整个表与新创建的列一起提取?我需要 2 个附加列与日期和时间的原因是与另一组数据进行比较。

这将使我能够提取具有特定日期范围和时间的数据。例如,从 01-SEP-19 到 30-SEP-19 以及从 08:00:00 到 10:00:00 的所有记录。

Select * 
From Table 
Where CRT_DTTM > '02-SEP-19' and CRT_DTTM < '03-SEP-19'
order by CRT_DTTM ASC

标签: sqloracle

解决方案


例如,从 01-SEP-19 到 30-SEP-19 以及从 08:00:00 到 10:00:00 的所有记录。

您不需要单独的列,只需在查询中包含时间提取逻辑即可。维护另一列仅存储时间效率低下。

 Select * 
   From Table 
     Where CRT_DTTM >= DATE '2019-09-01' and CRT_DTTM < DATE '2019-09-30'
     AND extract(hour from CRT_DTTM) >=8 and extract(hour from CRT_DTTM) < 10
 order by CRT_DTTM ASC

如果您想要更具体的时间,只需使用TO_TIMESTAMP您希望的开始和结束时间。

例如:

WHERE CRT_DTTM >= TO_TIMESTAMP('01-SEP-2019 08:20:00','dd-mon-yyyy hh24:mi:ss') 
..
..

推荐阅读