我们如何将时间戳转换为日期?
该表具有一个字段,start_ts它是的timestamp格式:
'05/13/2016 4:58:11.123456 PM'
Run Code Online (Sandbox Code Playgroud)
我需要查询表并找到表中的最大值和最小值timestamp,但我无法.
Select max(start_ts)
from db
where cast(start_ts as date) = '13-may-2016'
Run Code Online (Sandbox Code Playgroud)
但查询不返回任何值.
请帮我找一个日期的最大时间戳.
Pet*_*sko 26
CAST(timestamp_expression AS DATE)
Run Code Online (Sandbox Code Playgroud)
例如,查询是: SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;
尝试使用TRUNC而TO_DATE不是
WHERE
TRUNC(start_ts) = TO_DATE('2016-05-13', 'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用>=而<不是在start_ts列中使用函数:
WHERE
start_ts >= TO_DATE('2016-05-13', 'YYYY-MM-DD')
AND start_ts < TO_DATE('2016-05-14', 'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)
选择时使用此格式
to_char(systimestamp,'DD-MON-YYYY')
Run Code Online (Sandbox Code Playgroud)
例如:
从dual中选择to_char(systimestamp,'DD-MON-YYYY');
如果数据类型是时间戳,则可见格式无关紧要。
您应该避免将数据转换为日期或使用 to_char。而是使用 TO_TIMESTAMP() 将时间戳数据与时间戳值进行比较
WHERE start_ts >= TO_TIMESTAMP('2016-05-13', 'YYYY-MM-DD')
AND start_ts < TO_TIMESTAMP('2016-05-14', 'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)