一、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. shell中的括号(小括号,中括号,大括号)及单引号、 双引号,反引号(``)

    一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  2. Monotouch/WCF: How to consume the wcf service without svcutil

    Becuase monotouch compile to native code, so it has some limitation such as dynamic invoke is not al ...

  3. linux 查找文件命令

    find -name 文件名    在当前目录下查找 find -name nginx.conf

  4. Peter Norvig:学习在于挑战和重复

    黄小非译注(本文来自伯乐在线):本文作者Peter Norvig目前任职于Google,其职位是研究主管(Director of  Research). Peter Norvig是享誉世界的计算机科学 ...

  5. tomcat配置301重定向

    tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带“www'的域名重定向到带”www"域名下,又 ...

  6. 《Windows核心编程》第3章——handle复制相关实验

    先写一个程序,用来查看进程的内核对象,这样我们就能比较子进程是否继承了父进程的某个句柄: #include <windows.h> #include <stdio.h> #de ...

  7. LeetCode: Implement strStr() [027]

    [题目] Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if ...

  8. recyclerView 列表类控件卡顿优化

    1.使用ConstraintLayout减少布局层级. 2.可以的话,设置RecyclerView布局等高,然后设置recyclerView.setHasFixedSize(true)这样可以避免每次 ...

  9. [Git] git merge之squash

    reference : https://www.cnblogs.com/ungshow/p/3515161.html 看CM源码时,发现历史记录里有很多squash,于是google了解了一下. Gi ...

  10. Informatica 常用组件Filter之三 创建FIL

    在 Designer 中,切换到 Mapping Designer 并打开映射. 选择"转换-创建". 选择"过滤器转换",然后输入新的转换名称.过滤器转换的命 ...