mysql插入日期 vs oracle插入日期

今天做oracle日期插入的时候突然开始疑惑日期是如何插入的。

用框架久了,反而不自己做简单的工作了。比如插入。

通常,新建一个表对象,然后绑定数据,前端form提交,后端getModel后直接model.save()就完事了。

像insert这样的语句很少写了,除了备份sql的时候。

言归正传,

mysql插入日期不限制分隔符,不必明确格式,

至少测试了n次都成功了。

1 INSERT INTO person(name,birth) values('dd','2015-02-02');
2 INSERT INTO person(name,birth) values('dd','2015.02.02');
3 INSERT INTO person(name,birth) values('dd','2015/02/02');
4 INSERT INTO person(name,birth) values('dd','2015*02*02');
5 INSERT INTO person(name,birth) values('dd','2015^02^02');

也遇到奇葩的:

INSERT INTO person(name,birth) values('dd','2015-02-00');

居然成功了。

oracle插入日期

1.直接插入日期格式错误,todate函数可以:

1 --插入实例
2 insert into person(name, birth) values('ceshi',sysdate);
3 --错误的时间格式
4 insert into person(name,birth) values('hehe','2015-06-02 00:00:00');
5 --正确的插入日期
6 insert into person(name,birth) values('hehe',to_date('2015-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss'));
7 insert into person(name,birth) values('hehe',to_date('2015-01-01','yyyy-MM-dd'));

2.使用jdbc连接oracle时,java需使用java.sql类的时间类:

1 Person person = getModel(Person.class);
2 //        person.set("birth", java.sql.Date.valueOf("2015-06-08"));
3         person.set("birth", java.sql.Timestamp.valueOf("2014-06-08 05:33:99"));
4         System.out.println(person);
5         person.save();

一点是只有日期格式的,使用java.sql.Date类;一个是带时间的,则使用java.sqlTimestamp类。

当然,也可以使用to_date():

 可惜jfinal封装的model不可以使用,但是只要格式匹配,发现jfinal是可以直接存储,只要字段格式为:yyyy-MM-dd hh:mm:ss,例如2015-02-23 10:23:23 ,getmodel即可保存。

1 PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
2 String buydate="2004-06-08 05:33:99";
3 pstmt.setString(1, "Java编程思想");
4 pstmt.setString(2,buydate );
5 pstmt.execute();

附录oracle时间格式:

 1 附:oracle日期格式参数含义说明
 2 d:一周中的星期几
 3 day:天的名字,使用空格填充到9个字符
 4 dd:月中的第几天
 5 ddd:年中的第几天
 6 dy:天的简写名
 7 iw: ISO标准的年中的第几周
 8 iyyy:ISO标准的四位年份
 9 yyyy:四位年份
10 yyy,yy,y:年份的最后三位,两位,一位
11 hh: 小时,按12小时计
12 hh24:小时,按24小时计
13 mi:分
14 ss:秒
15 mm:月
16 mon:月份的简写
17 month:月份的全名
18 w:该月的第几个星期
19 ww:年中的第几个星期

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构之路

数据库” 查询选修所有课的学生信息“ exists解法的理解

学生选课信息共三个表: S:学生基本信息   sno   sname 95001 李二 95002 王三 95003 赵四 95004 孙小毛...

3345
来自专栏杨建荣的学习笔记

通过oracle类比MySQL中的字节字符问题(r4笔记第44天)

在几个月前写过一篇博文 MySQL数据类型 http://blog.itpub.net/23718752/viewspace-1371434/ 当时写完以后有...

3167
来自专栏JetpropelledSnake

SQL学习笔记之项目中常用的19条MySQL优化

MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select...

953
来自专栏沈唁志

谈谈在SQL语句中的优化技巧

1584
来自专栏james大数据架构

你真的会玩SQL吗?让人晕头转向的三值逻辑

你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接、外连接 你真的会玩SQL吗?三范式、数据完整性 你真...

1788
来自专栏java达人

认识九大经典sql模式

小结果集,源表较少,查询条件直接针对源表 对于典型的OLTP应用,多为返回小结果集的查询。如果过滤条件直接针对源表,我们必须保证这些过滤条件高效,对于重要的字...

1988
来自专栏Java爬坑系列

【MySQL疑难杂症】如何将树形结构存储在数据库中(方案三 Closure Table)

  今天介绍将树形结构存储在数据库中的第三种方法——终结表(原谅我这生硬的翻译。。)。   继续用上一篇的栗子,下面是要存储的结构图: image.png  ...

4008
来自专栏lestat's blog

mysql开发规范

命名规范 库名、表名、字段名必须使用小写字母,并采用下划线分割 库名、表名、字段名禁用超过32个字符。须见名知意 库名、表名、字段名禁用使 MySQL保留字 临...

39217
来自专栏搜云库

MySql常用30种SQL查询语句优化方法

1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

42919
来自专栏圆方圆学院精选

【许晓笛】EOS 数据库与持久化 API —— 架构

在 EOS 中,智能合约执行完毕后,所占用的内存会释放。程序中的所有变量都会丢失。如果智能合约里要持久地记录信息,比如游戏智能合约要记录每位用户游戏记录,本次合...

1194

扫码关注云+社区