PostgreSQL中日期类型与字符串类型的转换方法

示例如下:

postgres=# select current_date;
date
------------
2015-08-31
(1 row)

postgres=# select to_char(current_date,'YYYYMMDD');
to_char
----------
20150831
(1 row)
字符串转换为日期
postgres=# select to_date('20150831','YYYYMMDD');
to_date
------------
2015-08-31
(1 row)

PostgreSQL命令行中使用变量的问题

postgres=# create table test_tb(id int);
CREATE TABLE
postgres=# select * from test_tb ;
id

(0 rows)

postgres=# \set var 10
postgres=# \echo :var
10
postgres=# insert into test_tb values (:var);
INSERT 0 1
postgres=# select * from test_tb ;
id

10
(1 row)

PostgreSQL中SELECT INTO操作创建临时表的问题

postgres=# select * from child ;
no | student_name | age | class_no
------------------+---------
1 | zhangsan | 11 | 1
2 | zhaosi | 11 | 1
3 | xiaoshenyang | 12 | 21
4 | songxiaobao | 13 | 21
5 | zhaobenshan | 31 | 1
6 | huoya | 41 | 2
7 | haha | 81 | 2
(7 rows)

postgres=# select no,age into temporary table temp01 from child where
age=11;
SELECT 2
postgres=# select * from temp01 ;
no | age
---+----
1 | 11
2 | 11
(2 rows)

PostgreSQL中是否有表示错误,SQL状态的全局变量

PostgreSQL处理事务中错误的方法为抛出异常并捕获之

示例如下:

postgres=# create function test_sqlerrm()returns void as

$$

declare v_val int :=0;

begin

raise notice '%','1111';

v_val :=1/0;

exception

when others then

raise notice '%',sqlerrm;

end;

$$ language plpgsql;

CREATE FUNCTION

postgres=# select test_sqlerrm();

NOTICE:  00000: 1111

LOCATION:  exec_stmt_raise, pl_exec.c:3035

NOTICE:  00000: division by zero

LOCATION:  exec_stmt_raise, pl_exec.c:3035

test_sqlerrm

--------------

(1 row)

PostgreSQL中   CASE WHEN 语法问题

PostgreSQL同样支持case when +表达式 then +操作的语法。

示例如下:

postgres=# select job,ename from emp;

job  | ename

----------+-------

CLERK | SMITH

SALESMAN | ALLEN

SALESMAN | WARD

MANAGER | JONES

SALESMAN | MARTIN

MANAGER | BLAKE

MANAGER | CLARK

ANALYST | SCOTT

PRESIDENT | KING

SALESMAN | TURNER

CLERK | ADAMS

CLERK | JAMES

ANALYST | FORD

CLERK | MILLER

(14 rows)

下面的SQL,意为在job字段,从第二位开始取,取3位,为'LER'的则返回LER。

下面还是在job字段,从第二位开始取,取3位,为'ALE'的则返回在ename字段,第二位开始取,取两位的结果。

postgres=# select ename, job,case when substring(job,2,3)='LER' THEN substring(job,2,3)

postgres-# when substring(job,2,3)='ALE' then substring(ename,2,2)

postgres-# else 'other'

postgres-# end

postgres-# from emp;

ename | job | case

----------------------

SMITH | CLERK | LER

ALLEN | SALESMAN | LL

WARD | SALESMAN | AR

JONES | MANAGER | other

MARTIN | SALESMAN | AR

BLAKE | MANAGER | other

CLARK | MANAGER | other

SCOTT | ANALYST | other

KING | PRESIDENT | other

TURNER | SALESMAN | UR

ADAMS | CLERK | LER

JAMES | CLERK | LER

FORD | ANALYST | other

MILLER | CLERK | LER

(14 rows)

PostgreSQL中所有的类型都可以使用单引号(‘ ’)来输入。

warehouse_db=# select int '1' + int '100';
?column?
----------
101
(1 row)

PostgreSQL支持使用标准SQL的类型转换函数CAST进行类型转换。

warehouse_db=# select CAST('5' as char),CAST('2015-10-10' as char);
bpchar | bpchar
--------+--------
5 | 2
(1 row)

warehouse_db=# select CAST('5' as char),CAST('2015-10-10' as varchar(10));
bpchar | varchar
--------+------------
5 | 2015-10-10
(1 row)

PostgreSQL中双冒号类型转换的简洁方式。

warehouse_db=# select '5'::int ,'2015-10-10'::date;
int4 | date
------+------------
5 | 2015-10-10
(1 row)

一种任意类型的一个常量可以使用下列记号中的任意一种输入:

type ’string’

’string’::type

CAST ( ’string’ AS type )

字符串常量的文本被传递到名为type的类型的输入转换例程中。其结果是指定类型的一个常

量。如果对该常量的类型没有歧义(例如,当它被直接指派给一个表列时),显式类型造型

可以被忽略,在那种情况下它会被自动强制。

字符串常量可以使用常规SQL 记号或美元引用书写。

也可以使用一个类似函数的语法来指定一个类型强制:

typename ( ’string’ )

但是并非所有类型名都可以用在这种方法中,::、CAST()以及函数调用语法也可以被用来指定任意表达式的运行时类型转换。要避免语法歧义,type ’string’语法只能被用来指定简单文字常量的类型。type ’string’语法上的另一个限制是它无法对数组类型工作,指定一个数组常量的类型可使用::或CAST()。

CAST()语法符合SQL。type ’string’语法是该标准的一般化:SQL 指定这种语法只用于一些数据类型,但是PostgreSQL允许它用于所有类型。带有::的语法是PostgreSQL的历史用法,就像函数调用语法一样。

PostgreSQL 中日期类型转换与变量使用及相关问题的更多相关文章

  1. 关于json-lib中日期类型转换的分析与问题解决

    说明:本文中的json-lib版本为 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId& ...

  2. Java中数据类型转换&基本类型变量和对象型变量

    1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,lo ...

  3. 【postgresql】postgresql中的between and以及日期的使用

    在postgresql中的between and操作符作用类似于,是包含边界的 a BETWEEN x AND y 等效于 a >= x AND a <= y 在postgresql中比较 ...

  4. PostgreSQL 自定义自动类型转换(CAST)

    转载自:https://yq.aliyun.com/articles/228271 背景 PostgreSQL是一个强类型数据库,因此你输入的变量.常量是什么类型,是强绑定的,例如 在调用操作符时,需 ...

  5. Postgresql中的数据类型大全

    一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字 ...

  6. SpringMVC 06: 日期类型的变量的注入和显示

    日期处理和日期显示 日期处理 此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同 日期处理分为单个日期处理和类中全局日期处理 单个日期处理: 使用@Da ...

  7. java中强制类型转换

    在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...

  8. 在PostgreSQL中使用oracle_fdw访问Oracle

    本文讲述如何在PostgreSQL中使用oracle_fdw访问Oracle上的数据. 1. 安装oracle_fdw 可以参照:oracle_fdw in github 编译安装oracle_fdw ...

  9. sql语句中日期时间格式化查询

          今天在做会员管理系统搜索时,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式"2007-5-22 14:32:1 ...

随机推荐

  1. Machine Learning in Action -- AdaBoost

    初始的想法就是,结合不同的分类算法来给出综合的结果,会比较准确一些 称为ensemble methods or meta-algorithms,集成方法或元算法 集成方法有很多种,可以是不同算法之间的 ...

  2. jsonObject jsonarray

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...

  3. Web Storage事件无法触发

    不管是在同源其他页面还是在本页面都不能触发storage事件. <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  4. 【转】CodeIgniter定义自己的Helper和Helper的方法

    最近做程序,采用了PHP+CodeIgniter框架,总体来说这框架很轻而且上手也很快的. 首先,说下如何定义自己的Helper,个人理解helper其实就是定义函数方法. 如果要建个全新的自己的He ...

  5. jboss4.2.3建立oracle JMS应用

    一.基本配置 1 增加oracle驱动文件,ojdbc6.jar,不能使用小于该版本的jdbc驱动,jboss-4.2.3.GA\server\default\lib 2 增加retrotransla ...

  6. java effective 读书笔记

    java effective 读书笔记 []创建和销毁对象 静态工厂方法 就是“封装了底层 暴露出一个访问接口 ” 门面模式 多参数时 用构建器,就是用个内部类 再让内部类提供构造好的对象 枚举 si ...

  7. 查看Sql Server所有表占用的空间大小

    2010-01-26 sp_spaceused可以查看某个表占用的空间,但不能一次查看所有的表.今天研究了一下这个sp,写了下面这个查询: --刷新系统数据dbcc updateusage(0) wi ...

  8. php+mysql实现事务回滚

    模拟条件:第一个表插入成功,但是第二个表插入失败,回滚.第一个表插入成功,第二个表插入成功,执行.第一个表插入失败,第二个表插入成功,回滚.第一个表插入失败,第二个表插入失败,回滚.以上情况都需要回滚 ...

  9. 老调重弹:对kvo的封装思路

    关于kvo,kvo能做什么? kvo作为cocoa框架的重要特性之一,在底层框架中被大量使用.在特定的场合使用该特性往往能够带来难以想象的好处,让整个方案变得相当简洁和优雅.比如大名鼎鼎的下拉刷新的s ...

  10. 汇编ASCII大小写转换(字符串长度$的用法)

    data segment first db "BaSiC" db "iNfOrMaTiOn" len equ $-first ;×Ö·û´®³¤¶È ends ...