一、date

1.date、sysdate格式说明

  展示

  date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS;

  其存储格式只有一种:YYYY/MM/DD HH24:MI:SS

  展示格式一:

  当你只存年月日时,date实际存储的是:年月日0时0分0秒,在plsql中,其展示格式为:YYYY/MM/DD,

  将其转换成YYYY/MM/DD HH24:MI:SS时,返回的是YYYY/MM/DD 00:00:00。

  展示格式二:

  当date实际存储的是年月日时分秒时,在plsql中,其展示格式为:YYYY/MM/DD HH24:MI:SS;

  系统时间sysdate,在plsql中,其展示格式为:YYYY/MM/DD HH24:MI:SS。

  说明:与插入时的格式无关

  证实

  TESTDATE表结构

  插入sql的日期格式及结果展示

  补充:

  当插入年月日时分秒且时分秒为:00:00:00,在plsql中是不显示时分秒的。

  要想显示出来,需用to_char()

  若是还是对推荐有疑问,请看下面的 4.2 查询指定时间段的数据

2.日期转字符串

  TO_CHAR(date,format)

  方式一:只带一个参数

select to_char(t.schedule_date) from CONSULT_SCHEDULE t
--28-APR-17  

  方式二:带2个参数

  转换格式不区分大小写;

  小时格式化:不带24时,默认为12小时制,24小时格式转换时需要指明;

  分钟格式化:可以使用mi或mm,建议使用MI。

  说明:

  格式化成yyyy年mm月dd日

--年月日
--需要填充3个空格,不然‘日’显示不出来
SELECT TO_CHAR(SYSDATE,'yyyy"年"MM"月"dd"日" ') 系统日期 FROM DUAL

  

  注意:

  年月日需加上双引号;

  别名不能加单引号、双引号。

3.字符串转日期

  方法一:

  TO_DATE('dateStr', format),规则如下:

  转换格式不区分大小写;

  小时格式化:不带24时,默认为12小时制,24小时格式转换时需要指明;

  分钟格式化:必须使用mi,不能使用mm,否则会报错;

  dateStr的长度<=format的长度,都可以实现类型转换:

  方式一:标准格式

  年月日

  说明:

  年月日时分秒

  方式二:字符串只到分,会自动添加上:00秒。

  

  方式三:字符串也是只到日

  方法二:

  DATE'YYYY-MM-DD',并且只能是这一种格式。

  另外,TO_DATE(date),该函数也可以只传一个参数,但是这个参数必须是date类型,

表示的含义是:将任何格式的日期类均转换成YYYY/MM/DD的格式。

4.根据日期查询数据

  说明:这里着重介绍的是日期字段带有时分秒的

  4.1 查询某一天的数据

  测试环境:

  VIRTUAL_CARD表中共有5条记录;

  字段REGTIME的字段类型为date。

  

  情景模拟:查询2018年7月18日的数据记录

  格式要求:日期转变成YYYY-MM-DD HH24:MI:SS格式的字符串

  方式一:查询条件使用字符串实现

--查询条件按字符串进行
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_CHAR(T.REGTIME, 'yyyy-mm-dd') = '2018-07-18'

  方式二:查询条件使用日期实现

  方法一:TRUNC()

--查询条件按日期进行1
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TRUNC(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')

  方法二:TO_DATE()

--查询条件按日期进行2
SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_DATE(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')

  方式三:利用TO_DATE()特性

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE T.REGTIME >= TO_DATE('2018-07-18', 'YYYY-MM-DD')
AND T.REGTIME < TO_DATE('2018-07-19', 'YYYY-MM-DD')  

  方法四:TO_CHAR()-->TO_DATE() 不建议使用

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME
FROM VIRTUAL_CARD T
WHERE TO_DATE(TO_CHAR(T.REGTIME, 'YYYY-MM-DD'), 'YYYY-MM-DD') =
TO_DATE('2018-07-18', 'YYYY-MM-DD')

  查询结果展示

  updateTime--2018年8月15日10点21分

  4.2 查询指定时间段的数据

  表数据展示

  场景:查询从2018-08-05至2018-08-06的数据

  错误实现方式:

--错误实现:between and
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME BETWEEN TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
TO_DATE('2018-08-07', 'yyyy-mm-dd')
ORDER BY REGTIME

  查询结果:[2018/08/05 00:00:00,2018/08/07 00:00:00]

  方式一:

--方式一:[2018/08/05 00:00:00,2018/08/06 23:59:59]
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
REGTIME < TO_DATE('2018-08-07', 'yyyy-mm-dd')
ORDER BY REGTIME

  方式二:推荐使用

--方式二:[2018/08/05 00:00:00,2018/08/07 00:00:00)
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND
REGTIME < TO_DATE('2018-08-06', 'yyyy-mm-dd') + 1 --2018-08-07
ORDER BY REGTIME  

  方式三:

--方式三
SELECT REGTIME
FROM VIRTUAL_CARD
WHERE REGTIME >= TO_DATE('2018-08-05 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
REGTIME <= TO_DATE('2018-08-06 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
ORDER BY REGTIME  

  

5.date类型进行加减运算

二、timestamp

1.格式

--查询系统时间戳
SELECT SYSTIMESTAMP FROM DUAL  

三、相互转换

  1.日期转时间戳

--系统时间转时间戳
SELECT CAST(SYSDATE AS TIMESTAMP) DATE_TO_TIMESTAMP FROM DUAL

  

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 

oracle date日期类型 精析的更多相关文章

  1. Java String类型转换成Date日期类型

    插入数据库时,存入当前日期,需要格式转换 import java.text.SimpleDateFormat; formatter = new SimpleDateFormat( "yyyy ...

  2. SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

    在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式,始终响应回去的都是long类型时间戳. 查阅资料之后找到解决方法: 方法一(在springmvc的x ...

  3. Date日期类型的绑定

    自定义类型的绑定 springmvc没有提供默认的对日期类型的绑定,需要自定义日期类型的绑定 第一张图是po类中日期属性,第二张图是页面中日期属性的内容,第三张图片是访问出现400错误 因为日期的格式 ...

  4. oracle中日期类型 to_date 和to_timestamp什么区别啊?

    1.to_date() 和to_timestamp()区别 由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒.如果要取到毫秒,oracle 9i以上版本,可以 ...

  5. easyui框架Date日期类型以json形式显示到前台datagrid时,显示为[object Object]

    如下图,easyui当后台把时间数据返回转换成json然后加载在easyui的datagrid里面,显示为[object Object]      需要对时间格式添加格式的显示方法 /** * 时间格 ...

  6. java中Date日期类型的大小比较

    方法一:java.util.Date类实现了Comparable接口,可以直接调用Date的compareTo()方法来比较大小 String beginTime = "2018-07-28 ...

  7. java中String类型与Date日期类型的互相转换

    //String格式的数据转化成Date格式,Date格式转化成String格式 SimpleDateFormat formatter= new SimpleDateFormat("yyyy ...

  8. Java date日期类型,结束日期减去开始日期求两者时间差,精确到秒

    /** * @Author: * @Description: * @Date: 2019/4/10 19:01 * @Modified By: */ @Slf4j public class DateU ...

  9. Date日期类型转化成中文字符串

    例子: select to_char(sysdate,'yyyy"年"mm"月"dd"日"') as nowYear from dual 结 ...

随机推荐

  1. mybatis如何根据mapper接口生成其实现类

    SpringBoot集成mybatis mybatis的statement的解析与加载 mybatis如何根据mapper接口生成其实现类 mybatis的mapper返回map结果集 mybatis ...

  2. oracle的dump理解

    http://blog.csdn.net/notbaron/article/details/51228444 http://blog.csdn.net/lqx0405/article/details/ ...

  3. 详解Linux中CentOS6.8下解压安装mysql-5.7.14

    原文:http://blog.csdn.net/yangle4695/article/details/52185859 mysql下载地址:http://dev.mysql.com/downloads ...

  4. 解决“listView点击一个Item,另外几个Item也跟着改变”的问题

    如图所看到的: 我点击Item,右边的checkBox就会对应的变化.可是当我第一次做的时候.点击第一个Item,右边的checkBox变为绿色,可是当我listView往下拉的时候,发现以下也有是绿 ...

  5. mysql批量insert速度超慢

    在进行大批量数据insert的时候,我使用的是hibernate的进行save,而数据库采用mysql.但是在save的时候,速度很慢.         刚开始以为是MYSQL进行DNS解析的问题,于 ...

  6. Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' in

    错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...

  7. 加载依赖的jar包在命令行编译和运行java文件

    在命令里编译和执行java文件,当应用程序需要需要依赖的jar包里面的class文件才能编译运行的时候,应该这样做: 1. 首先是编译过程,在命令行里面执行: (1) javac -classpath ...

  8. 在Ubuntu 12.04 桌面上设置启动器(快捷方式)

    在Ubuntu 12.04 桌面上设置启动器(快捷方式)过程讲解: 如下图所示,Eclipse 和 SQLDeveloper 都可以直接双击打开,这些应用程序的启动器都在 /usr/share/app ...

  9. 动态装载外部JavaScript脚本文件

    当我们请求一个URL地址时,浏览器会从远程服务器装载各种所需的资源,如JavaScript.CSS.图片等.而在加载JavaScript时,常常会发生下面这种情况: 也就是说,当浏览器碰到Script ...

  10. Android应用开发学习笔记之Fragment

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Fragment翻译成中文就是“碎片”.“片断”的意思,Fragment通常用来作为一个Activity用户界面的一 ...