【发布时间】:2017-04-27 12:32:06
【问题描述】:
有一列“DateTime”以“YYYY/MM/DD HH24:MI:SS”格式显示日期和时间。 无论特定日期如何,我只需要显示时间在特定范围(2AM - 6AM)内的行。 我有一个代码只显示特定日期的时间范围(凌晨 2 点 - 早上 6 点)。我需要显示过去 7 天内的行,时间范围为 2AM-6AM。
SELECT *
FROM <table_name >
WHERE DateTime BETWEEN TO_DATE (
TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY')
|| ' '
|| '02:00:00',
'DD-MM-YYYY HH24:MI:SS')
AND TO_DATE (
TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY')
|| ' '
|| '06:00:00',
'DD-MM-YYYY HH24:MI:SS')
ORDER BY 1 DESC
【问题讨论】:
-
DATE数据类型没有格式 - 它在内部存储为 7-bytes(2 代表年,1 代表月、日、小时、分钟和秒)。只有当用户界面(例如 SQL/Plus、SQL 开发人员、TOAD、Java、Python 等)对其进行处理时,才会给它一个格式 - 默认格式是NLS_DATE_FORMAT会话参数,这可以是 changed by individual users在他们的会话中。