• 八种数据库时间函数的简单总结


    八种数据库时间函数的简单总结

    PG,SQLSERVER,Oracle,MySQL,达梦,神通,人大金仓,瀚高.
    

    简单总结一下

    1. PG,神通,人大金仓,瀚高 基本上一样:
    都可以使用now()获取时间 age获取时间间隔(神通是天数,其他的年月数),extract获取时间数据的部分内容.
    使用 + 或者是 -  interval '3 days' 表示三天后或者是三天前或者是其他时间单位的时间数值.
    2. Oracle数据库和达梦数据库基本上一样:
    使用 select sysdate from dual 可以获取当前时间
    使用 也可以使用 + 或者是 - interval '数字' 单位(单数形式) from dual 来获取
    
    注意1: 这两类存在较大的不同是 PG系可以使用复数形式,并且需要放到hard quote 里面 Oracle 只需要将数字放到单引号. 日期类型必须单数. 
    注意2: oracle必须有from 达梦可以有 from dual 也可以没有. 
    
    3. SQLSERVER 数据库自称一派, 使用 select getdate()的方式获取日期. dateadd和datediff函数进行时间计算. 
    4. Mysql数据库比较偏向于PG数据库.  但是需要注意的是 他有 date_add 函数 还有 dayofyear dayofmonth等的函数.
    

    1. PG数据库

    获取当前时间 
    now()
    select now() ;
    其他函数
    # 时间戳
     select current_timestamp;
    # 日期 
     select current_date;
    # 时间
     select current_time;
    

    1. PG数据库

    # 时间计算
    select now() + interval '2 years'; 
    select now() - interval '2Y'; 
    # 部分简写以及含义
    Y	Years
    M	Months (in the date part)
    W	Weeks
    D	Days
    H	Hours
    M	Minutes (in the time part)
    S	Seconds
    # 时间间隔
    age
    select age(timestamp '2013-11-27');   
    # 时间截取
    extract
    select extract(doy from now());
    # 注意是 day of year 的简写
    select extract(week from now());
    select extract(month from now());
    

    2. SQLSERVER数据库

    # 获取当前时间
    select getdate()
    # 时间计算
    dateadd(datepart,number,date)
    select dateadd(year,-2,getdate())
    # 时间差值计算
    datediff( date-part, startdate, enddate )
    # 比如计算有从出生有多少天
    select datediff( day,  '2013-11-27',getdate() )
    # 获取部分时间内容
    # datepart
    SELECT DATEPART(Second, getdate()) as '秒数'
    

    3. Oracle数据库

    # 注意 oracle的时间函数里面 没有括号 真TM乱啊
    # 注意 Oracle 必须从虚标里面查. NND真特殊.
    # 获取当前时间
    select sysdate from dual
    # 设置时间格式
    select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual;
    # 也可以仅获取部分内容
    select to_char(sysdate,'hh24') from dual;
    # 时间计算
    # 获取七天后的日期
    # 注意 这一点 oracle与PG的计算时间前后的函数是一样的. 
    select sysdate,sysdate +  interval '7' DAY from dual;
    

    4. 达梦数据库

    # 获取当前时间
    SELECT sysdate()
    # 注意达梦为了实现oracle兼容也可以使用 oracle的语法进行处理
    select sysdate from dual
    # 而且他还可以带括号
    select sysdate() from dual
    # 他的可以完全模仿Oracle来处理
    # 设置时间格式
    select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual;
    # 也可以仅获取部分内容
    select to_char(sysdate,'hh24') from dual;
    # 时间计算
    # 获取七天后的日期
    # 注意 这一点 oracle与PG的计算时间前后的函数是一样的. 
    select sysdate,sysdate +  interval '7' DAY from dual;
    # 其他的先不管了...
    

    5. MySQL数据库

    # 获取当前时间
    select now();
    # 还可以用如下的函数
     current_timestamp(),current_timestamp,localtime(),localtime
    # 跟PG一样 用 now获取 
    # 还有另外一个函数 sysdate 但是存在区别
    #sysdate() 日期时间函数跟 now() 类似,不同之处在于:
    #now() 在执行开始时值就得到了,sysdate() 在函数执行时动态得到值。
    select now(), sleep(1), now();
    select sysdate(), sleep(1), sysdate();
    # 注意秒数 是不一样的.
    # 只获取当前日期
    select curdate();
    # 只获取当前时间
    select curtime();
    # 获取时间的部分内容
    select extract(month from sysdate())
    # 这个函数跟PG的是一样的.
    

    5. MySQL数据库

    # 获取时间是本周/本月/本年的天数
    select dayofweek(sysdate());  
    select dayofmonth(sysdate());  
    select dayofyear(sysdate());  
    # MySQL 返回星期和月份名称函数:dayname(), monthname() 
    select dayname(sysdate())
    select monthname(sysdate())
    # 注意西方世界 Sunday 是First day of The week.
    # MySQL其他的时间计算函数
    date_add
    select date_add(sysdate(),interval -3 year)
    # 注意这里面没有复数形式.
    # 计算时间差值
    select datediff('2013-11-27',sysdate())
    # 这个出来是负数.
    

    6. 神通数据库

    # 怀疑神通数据库的函数和内核比较偏向于PG.
    # 获取当前时间
    select now();
    # 验证了一下果然和PG很相似基本通用.
    # 时间计算
    select now() + interval '2 years'; 
    select now() - interval '2Y'; 
    # 时间间隔
    age
    select age(timestamp '2013-11-27');   
    # 时间截取
    extract
    select extract(doy from now());
    # 注意是 day of year 的简写
    select extract(week from now());
    select extract(month from now());
    

    7. 人大金仓数据库

    #发现跟神通数据库一样 时间函数和PG也是相同的
    select now();
    # 验证了一下果然和PG很相似基本通用.
    # 时间计算
    select now() + interval '2 years'; 
    select now() - interval '2Y'; 
    # 部分简写以及含义
    # 时间间隔
    age
    select age(timestamp '2013-11-27');   
    # 时间截取
    extract
    select extract(doy from now());
    # 注意是 day of year 的简写
    select extract(week from now());
    select extract(month from now());
    

    8.瀚高数据库

    # 与PG数据库基本一致..
    
  • 相关阅读:
    CF1056G
    mysql xtrabackup 备份恢复
    linux yum源配置
    mysql 第24章 优化
    mysql 第23章 监控
    mysql 第22章 高可用MMM、MHA
    mysql 第21章 集群
    mysql 第20章 复制
    mysql 第19章 备份恢复
    mysql 第18章 导入导出
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/16099801.html
Copyright © 2020-2023  润新知