码迷,mamicode.com
首页 > 数据库 > 详细

postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式

时间:2019-06-20 09:44:22      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:sql数据库   bug   写法   作者   声明   nbsp   from   inf   timestamp   

数据库中:字符串 转换为 时间格式

二者区别:

        to_data 转换为 普通的时间格式
        to_timestamp 转换可为 时间戳格式
出错场景: 比较同一天 日期大小的时候,很容易出错

例如:
        select current_timestamp from pub_employee
        结果如下:
        技术图片
    select current_timestamp <= to_date(‘2018-03-12 18:47:35‘,‘yyyy-MM-dd hh24:mi:ss‘) flag from pub_employee
    语句中的2018-03-12 18:47:35 要比 current_timestamp当前的时间 大两个小时,
    但是结果如下:

技术图片

结果是 false
原因是:select to_date(‘2018-03-12 18:47:35‘,‘yyyy-MM-dd hh24:mi:ss‘) from pub_employee
的结果如下:并不是时间戳

技术图片
正确的写法
select current_timestamp <= to_timestamp(‘2018-03-12 18:47:35‘,‘yyyy-MM-dd hh24:mi:ss‘) flag from pub_employee
结果:技术图片
为true
因为:select to_timestamp(‘2018-03-12 18:47:35‘,‘yyyy-MM-dd hh24:mi:ss‘) from pub_employee

技术图片

    
============================================================
to_date:

方式一:正确
select to_date(‘2018-03-08‘,‘yyyy-MM-dd‘) from pub_employee
方式二:
select to_date(‘2018-03-08 18:55:33‘,‘yyyy-MM-dd‘) from pub_employee
方式三:
select to_date(‘2018-03-08 18:55:33‘,‘yyyy-MM-dd hh24:mi:ss‘) from pub_employee

使用to_date 返回的都是以下结果:

 

技术图片
to_timestamp:

方式一:
select to_timestamp(‘2018-03-08‘,‘yyyy-MM-dd‘) from pub_employee
方式二:
select to_timestamp(‘2018-03-08 18:55:33‘,‘yyyy-MM-dd‘) from pub_employee
方式一和二都是以下格式,虽然都是时间戳,但是后面一截是0

技术图片

方式三:正确
select to_timestamp(‘2018-03-08 18:55:33‘,‘yyyy-MM-dd hh24:mi:ss‘) from pub_employee

 技术图片

---------------------
作者:大bug
来源:CSDN
原文:https://blog.csdn.net/sky_limitless/article/details/79527665
版权声明:本文为博主原创文章,转载请附上博文链接!

postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式

标签:sql数据库   bug   写法   作者   声明   nbsp   from   inf   timestamp   

原文地址:https://www.cnblogs.com/telwanggs/p/11056500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!