To_Date, To_Char 在甲骨文
To_Date, To_Char in oracle
我对 Oracle 数据库的查询是:
SELECT NBR, START_TIME,END_TIME, BYTES_DATA
FROM TABLE_NAME Partition (P201607)
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%'
结果:
NBR START_TIME END_TIME BYTES_DATA
1029320319 2016-07-01 00:15:51 2016-07-01 00:22:44 158014048
1029320319 2016-07-01 00:22:51 2016-07-01 01:22:51 616324863
1029320319 2016-07-01 01:22:51 2016-07-01 01:55:15 431354240
1029320319 2016-07-01 01:55:22 2016-07-01 02:53:45 1040869155
1029320319 2016-07-01 02:53:52 2016-07-01 03:53:52 40615861
1029320319 2016-07-04 07:22:05 2016-07-04 07:22:05 4911
1029320319 2016-07-05 06:42:56 2016-07-05 07:42:56 58271774
1029320319 2016-07-05 07:42:56 2016-07-05 07:42:56 173
1029320319 2016-07-08 07:47:01 2016-07-08 07:47:01 105995
但我想根据时间过滤这些输出。如何获取本月(07)或过去 7 天内 start_time 和 end_time 在 06:30:00 和 07:59:59 之间的所有记录?
使用 to_date 或 to_char 您可以重新格式化 date/time 字段以匹配所需的条件,例如
此示例将显示开始或结束时间与当前月份相同的所有条目:
SELECT NBR, START_TIME,END_TIME, BYTES_DATA
FROM TABLE_NAME Partition (P201607)
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%'
AND ( (TO_DATE(START_TIME, 'mm') = TO_DATE(SYSDATE, 'mm') OR
(TO_DATE(END_TIME, 'mm') = TO_DATE(SYSDATE, 'mm'))
更改最近 7 天的匹配条件,例如
trunc 关键字从 date/time 值中删除时间戳:
AND ( (TO_DATE(START_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days) OR
(TO_DATE(END_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days))
更改 to_date 中的格式掩码以指定时间,例如
此添加将过滤开始或结束时间介于 06:30:00 和 07:59:59 之间的条目:
AND ( (TO_DATE(START_TIME,'hh24:mi:ss') BETWEEN
TO_DATE('06:30:00','hh24:mi:ss') AND
TO_DATE('07:59:59','hh24:mi:ss') ) OR
(TO_DATE(END_TIME,'hh24:mi:ss') BETWEEN
TO_DATE('06:30:00','hh24:mi:ss') AND
TO_DATE('07:59:59','hh24:mi:ss') )
我喜欢 TechOnTheNet 因为 descriptions/syntax 这个函数和其他 Oracle 函数。有关可用格式参数的完整列表,请参阅 link。
我对 Oracle 数据库的查询是:
SELECT NBR, START_TIME,END_TIME, BYTES_DATA
FROM TABLE_NAME Partition (P201607)
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%'
结果:
NBR START_TIME END_TIME BYTES_DATA
1029320319 2016-07-01 00:15:51 2016-07-01 00:22:44 158014048
1029320319 2016-07-01 00:22:51 2016-07-01 01:22:51 616324863
1029320319 2016-07-01 01:22:51 2016-07-01 01:55:15 431354240
1029320319 2016-07-01 01:55:22 2016-07-01 02:53:45 1040869155
1029320319 2016-07-01 02:53:52 2016-07-01 03:53:52 40615861
1029320319 2016-07-04 07:22:05 2016-07-04 07:22:05 4911
1029320319 2016-07-05 06:42:56 2016-07-05 07:42:56 58271774
1029320319 2016-07-05 07:42:56 2016-07-05 07:42:56 173
1029320319 2016-07-08 07:47:01 2016-07-08 07:47:01 105995
但我想根据时间过滤这些输出。如何获取本月(07)或过去 7 天内 start_time 和 end_time 在 06:30:00 和 07:59:59 之间的所有记录?
使用 to_date 或 to_char 您可以重新格式化 date/time 字段以匹配所需的条件,例如
此示例将显示开始或结束时间与当前月份相同的所有条目:
SELECT NBR, START_TIME,END_TIME, BYTES_DATA
FROM TABLE_NAME Partition (P201607)
WHERE BYTES_DATA <> 0 AND NBR LIKE '%29320319%'
AND ( (TO_DATE(START_TIME, 'mm') = TO_DATE(SYSDATE, 'mm') OR
(TO_DATE(END_TIME, 'mm') = TO_DATE(SYSDATE, 'mm'))
更改最近 7 天的匹配条件,例如
trunc 关键字从 date/time 值中删除时间戳:
AND ( (TO_DATE(START_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days) OR
(TO_DATE(END_TIME, 'yyyy/mm/dd') >= (TRUNC(SYSDATE) - INTERVAL '7' days))
更改 to_date 中的格式掩码以指定时间,例如
此添加将过滤开始或结束时间介于 06:30:00 和 07:59:59 之间的条目:
AND ( (TO_DATE(START_TIME,'hh24:mi:ss') BETWEEN
TO_DATE('06:30:00','hh24:mi:ss') AND
TO_DATE('07:59:59','hh24:mi:ss') ) OR
(TO_DATE(END_TIME,'hh24:mi:ss') BETWEEN
TO_DATE('06:30:00','hh24:mi:ss') AND
TO_DATE('07:59:59','hh24:mi:ss') )
我喜欢 TechOnTheNet 因为 descriptions/syntax 这个函数和其他 Oracle 函数。有关可用格式参数的完整列表,请参阅 link。