201917 Oracle中to_date to_char的区别

没有很多精力去仔细研究,做深入调查和研究
就把自己今天经历的记录下来,免得以后到处找,到处翻。

  1. sysdate是一个时间型函数,我把它理解为时间型变量
    因此,不能用 select to_date(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
    这种命令
    当然,用了 ‘yyyy-mm-dd hh24:mi:ss’ 这种格式,那就是要把一个时间变量转换成char型。于是:

  2. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 是正确的

  3. 如果要得到当天某个确定的时间点:
    select to_char(trunc(sysdate)+22*60/1440,'yyyy-mm-dd hh24:mi:ss') from dual;
    得到的是今天22点这个整点

  4. 如果要得到第二天某个确定的时间点:select to_char(trunc(sysdate)+1+22*60/1440,'yyyy-mm-dd hh24:mi:ss') from dual;
    得到的是第二天22点这个整点
    201917 Oracle中to_date to_char的区别_第1张图片

  5. 创建物化视图:

    create materialized view v_a refresh fast on demand
     start with to_date('27-03-2019 00:01:00','dd-mm-yyyy hh24:mi:ss') next sysdate+1
     as 
     select * from a;
    

    如果此刻是2019年3月26日13:30
    那么,如果现在执行该命令,那么,第一次刷新,时间是 明天凌晨0点1分,接着一次刷新,就是2019年3月27日的13:30
    所以,若要固定时间,一定要用trunc命令来截断。

奇怪了,自己在评论里的东西,搞了几趟却看不见 只能修改原文
在dos下,如果要显示日期格式为:20190326(避免连接符风险) 那么:
set date=%Date:~0,4%%Date:~5,2%%Date:~8,2%
echo %date%
含义是:从第0位开始取4位,从第5位开始取2位,从第8位开始取两位

你可能感兴趣的:(#,ORACLE)