关于Postgresql数据库查询结果不足位数前面补位的操作

本文讨论了在PostgreSQL数据库中,针对日期和时间分开存储且类型为numeric的情况,如何处理查询时的不足位数补位问题。当时间小于12点时,时间字段只有五位,导致查询时的错误。解决方案是先进行补位操作,再进行字段拼接查询。文章介绍了使用PostgreSQL的函数来实现这一操作。
摘要由CSDN通过智能技术生成

    问题描述:数据库在建表时将日期和时间分为两个字段,而且存储类型为numeric,所以数据库存储的时间为l_date:20180512,l_input_time:120804。如下图:


    但系统需求一般都会要求按时间查询,比如查询2018-05-21 08:05:10到2018-05-25 08:05:10之间的数据,这就给我们查询带来了麻烦,尽管这不是个复杂的问题。

    首先想到的就是把两个字段合并变成一个字段来做条件查询,这时我们会发现一个问题,如上面图中所示,当时间小于12点时时间只存了五位数字,这时候之间拼接会变成20180522 82538,这样明显不对。

    这时我们自然会想到先让时间补位再拼接,代码如下:

 

下面我面简单介绍一下Postgresql中有一些函数;

函数 说明 实例 结果
length(String) 计算字符串长度 length('1234') 4
length(String bytea, encoding name ) 计算字符串长度,指定字符串使用的编码 length('1234', 'UTF8') 4
CAST(name AS type) 将指定字段转换成指定类型 CAST(1234 as VARCHAR) '1234'
lpad(String text,length int [,fill text])  通过填充字符填充(默认情况下的空间)将字符串填充到长度长度。如果不足某一长度,则在左边自动补上指定的字符串,直至达到指定长度,可同时指定多个自动填充的字符。如果字符串已经长于长度,那么它被截断(在右边)。 lpad('82538', 6, '0') 082538
String || String or String || non-String  or non-String  || String 连接操作 'Post' || 'greSQL' PostgreSQL
bit_length(String) 计算字符串的位数 bit_length('1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值