PostgreSQL 中日期类型转换与变量使用及相关问题
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 中日期类型转换与变量使用及相关问题的更多相关文章
- 关于json-lib中日期类型转换的分析与问题解决
说明:本文中的json-lib版本为 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId& ...
- Java中数据类型转换&基本类型变量和对象型变量
1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型 byte,short,int,lo ...
- 【postgresql】postgresql中的between and以及日期的使用
在postgresql中的between and操作符作用类似于,是包含边界的 a BETWEEN x AND y 等效于 a >= x AND a <= y 在postgresql中比较 ...
- PostgreSQL 自定义自动类型转换(CAST)
转载自:https://yq.aliyun.com/articles/228271 背景 PostgreSQL是一个强类型数据库,因此你输入的变量.常量是什么类型,是强绑定的,例如 在调用操作符时,需 ...
- Postgresql中的数据类型大全
一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字 ...
- SpringMVC 06: 日期类型的变量的注入和显示
日期处理和日期显示 日期处理 此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同 日期处理分为单个日期处理和类中全局日期处理 单个日期处理: 使用@Da ...
- java中强制类型转换
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- 在PostgreSQL中使用oracle_fdw访问Oracle
本文讲述如何在PostgreSQL中使用oracle_fdw访问Oracle上的数据. 1. 安装oracle_fdw 可以参照:oracle_fdw in github 编译安装oracle_fdw ...
- sql语句中日期时间格式化查询
今天在做会员管理系统搜索时,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式"2007-5-22 14:32:1 ...
随机推荐
- web前端性能概述
1.认识前端性能 不管你的网站设计的有多好,后端有多好,对于用户来说全部都是无感知的,用户只关心页面打开的速度,而前端性能表现很大程度上影响着用户的这种感知. 改善前端的性能对用户感知的整体性能提升有 ...
- Delphi深度探索-CodeSite应用指南
Delphi深度探索-CodeSite应用指南 Delphi虽然为我们提供极其强大的调试功能,查找Bug仍然是一项艰巨的工作,通常我们写代码和调试代码的所消耗的时间是大致相同的,甚至有可能更多.为了减 ...
- Delphi 记录类型- 结构指针
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 纯css下拉菜单的制作
通过观察下拉菜单的过程,发现有两种状态,一种是鼠标没有hover时,一种是鼠标hover时. 主菜单hover时,显示子菜单:主菜单没有hover时,不显示子菜单 <!DOCTYPE html& ...
- Java 遍历Map时 删除元素
Java代码 package,,,,,,,,,,,==){ System.out.println("delete this: "+key+" = "+key ...
- 【转】Unity3D的输入(Input)——键盘和鼠标
http://blog.csdn.net/lingyun_blog/article/details/41451565 Unity3D使用input类控制用户的输入,输入包括了用户键盘,鼠标,触摸,重力 ...
- 3D模型修改
xnalara模型修改---增添(技术交流贴2) 其实很早就想做这个教程(流程)但有一种叫拖延症的东东捆了我半年~~于是这个帖子诞生与此,,希望对某些骚年有用... 送TA礼物 回复 举报|1 ...
- java 使用cookie记录用户上一次访问的时间 记住 用户的 登录名
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...
- Android Handler简单示例
package com.firstapp.foo.firstapp; import android.os.Handler; import android.os.Message; import andr ...
- JMeter学习-013-JMeter 逻辑控制器之-如果(If)控制器
前文简述了 JMeter 如何通过 HTTP Cookie管理器,实现了在不执行登录操作的情况下,通过 Cookie 实现登录态的操作,具体请参阅:JMeter学习-012-JMeter 配置元件之- ...