mysql(版本:5.1.50)的时间日期类型如下:

datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59

timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到2038

date 3bytes xxxx-xx-xx 1000-01-01到9999-12-31

year 1bytes xxxx 1901到2155

time 3bytes xx:xx:xx -838:59:59到838:59:59(为了满足时间的加减运算)

java(1.6) 中能保存时间日期类型的类主要有

java.util.Date

java.util.Calendar

java.sql.Date

java.sql.Time

java.sql.Timestamp

以前从mysql中查询出来的时间日期类型,都放在java.util.Date类型里面了。这样带来一系列的问题,首先这个类提供的时间操作函数太少,一般都需要转换成java.util.Calendar再去操作;其次即使使用了java.util.Calendar,也不是很方便,一个很简单的想法,需要写很多代码才能实现;java.util.Date的数据内容为xxxx-xx-xx xx:xx:xx,有时候不需要时间,只需要日期。从数据库中取值出来的日期类型放到这个类中的时候,会在时间位自动补上当前时间。这使得本来两个日期在数据库中是相等的,取出来放到这个类得时候就不再相等了,需要去考虑时间上的误差,很是头疼。

java提供与mysql方便交互的三种数据类型

java.sql.Date

java.sql.Time

java.sql.Timestamp

它们都是继承java.util.Date,算是对该类的精简,很适合跟数据库交互。

===========java注入数据库==========

java类型   mysql类型        成功与否

date         date               yes

date         time               no

date         timestamp       no

date         datetime         no

time         date               no

time         time               yes

time         timestamp       no

time         datetime         no

timestamp date              yes

timestamp time              yes

timestamp timestamp     yes

timestamp datetime        yes

==========end java注入数据库========

总规律,如果A完全包含B,则A可以向B注入数据,否则报错

==========从数据库提取到java ==========

mysql类型    java类型     成与否

date             date         yes

date             time         yes --------------缺少的部分使用历元

date           timestamp   yes --------------缺少的部分使用历元

time           date           yes --------------缺少的部分使用历元

time           time           yes

time          timestamp    yes --------------缺少的部分使用历元

timestamp date           yes

timestamp time           yes

timestamp timestamp   yes

datetime      date         yes

datetime      time         yes

datetime    timestamp   yes

==========end 从数据库提取到java=======

不会出错,缺少的部分使用历元,而不是当前日期时间

null to db(null) =====> 也是null

null to db(not null)=======> 数据库报错

db(null) to java==========> 如果单字段出来,则整个entity都是null,如果带着其他不是null的字段出来,则可以实例化entity,本身字段依然是null

db(not null) to java==========> 如果包含日期,则报错,否则为000

最优解决方案,定义成可以为null

java.sql时间系统的运算系列

after,before

compareTo原小于参数返回<0,等于返回=0,大于返回>0

优点:于数据库同类型,可以方便传输(无论是从DB到src还是反方向),方便比较大小

缺点:缺少运算单元,不适合时间跳跃的运算和间隔的运算

总结:calendar具有强大的跳跃运算和间隔运算能力,在需要的时候,可以将sql系列的时间转成calendar。

先设置calendar为历元,然后从sql系列时间中转换,最后再转回sql系列时间。

calendar只用于时间有跳跃的转换,对比运算统一使用sql系统,这样代码将更清晰

date 和 calendar怎么初始化为格林威治时间

new date(0)

calendar.setTimeInMillis(0)

sql系列时间

static valueOf

new XX(0)获得历元

new XX(year+1900, month+1,day,hour,minute,second,nano)已过时,创建也没错

toString或者SimpleDateFormat

java 和mysql 时间_java和mysql之间的时间日期类型传递相关推荐

  1. java和mysql之间的时间日期类型传递

    摘自:http://blog.csdn.net/weinianjie1/article/details/6310770 MySQL(版本:5.1.50)的时间日期类型如下: datetime 8byt ...

  2. 向mysql中插入时间_Java向mysql中插入时间的方法

    ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的时 ...

  3. java mysql 查询_java连接mysql数据库达成数据查询详细教程

    前言:本篇文章适用于所有前后端开发者 众所周知,只要是编程,那肯定是需要存储数据的,无论是c语言还是java,都离不开数据的读写,数据之间传输不止,这也就形成了现代互联网的一种相互存在关系! 而读写存 ...

  4. java mysql 配置_Java连接MySQL数据库详细分析

    一:工具 eclipse MySQL5.7 MySQL连接驱动:mysql-connector-java-5.1.44-bin.jar下载地址 二:加载驱动 2.1 在工程目录中创建lib文件夹,将下 ...

  5. java mysql存储过程_JAVA调用MySQL存储过程

    展开全部 java代码copy: Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager .g ...

  6. java连接mysql乱码_java链接mysql 中文乱码

    {转!} 背景: 由于最近在开发一个APP的后台程序,需要Java连接远程的MySQL数据库进行数据的更新和查询操作,并且插入的数据里有中文,在插入到数据库后发现中文都是乱码.网上查了很多教程,最后都 ...

  7. 测试jdbc连mysql数据库_java连接mysql数据库及测试是否连接成功的方法

    本文实例讲述了java连接mysql数据库及测试是否连接成功的方法.分享给大家供大家参考,具体如下: package com.test.tool; import java.sql.Connection ...

  8. java和javascript区别_java和javascript之间有什么区别

    java和javascript之间有什么区别?本篇文章就给大家介绍java和javascript之间的区别,让大家了解java和javascript是什么?它们之间的差异有哪些.有一定的参考价值,有需 ...

  9. java读写mysql数据库_Java读写MySQL数据库小实例

     Java读写MySQL数据库小实例 首先需要安装和配置好MySQL数据库.接下来,先创建一个数据库,Java代码连接此数据库,然后读写. 假设基于MySQL命令行创建一个叫做:phildatab ...

最新文章

  1. 为什么 scanf( )(scanf_s)函数老要输入两次才行?
  2. 怎样让手中的钱成为生财工具
  3. 小新pro13 重装注意_新款小新pro 13注意什么?买前必读
  4. flutter能开发游戏吗_Flutter开发游戏初体验,喜大普奔
  5. 练习3-8 查询水果价格
  6. HTML实现文件上传和HTML实现打开文件目录
  7. 【WB32库开发】第13章(上)DMA直接存储器访问——存储器到存储器
  8. 关于地理数据收集与处理的基本工具推荐(2)---10m精度的全球土地覆盖数据下载
  9. vim:修改vim录制的宏
  10. L1-034 点赞 (20分)
  11. 基于STC89C52单片机实现简易计算器
  12. python爬虫从入门到实践pdf百度云_PYTHON网络爬虫从入门到实践.pdf
  13. 程序员的苦与痛,又有谁懂!改完这个bug就离职,网友:大佬牛逼
  14. 实践是检验真理的唯一标准之python array.sum(axis=0)
  15. 如何在centos环境下运行.exe文件
  16. UCI银行营销数据集---数据可视化
  17. jQuery前端开发学习指南(18)——利用jQuery实现元素的隐藏、显示和切换及其动画效果
  18. 异形结构的纳米材料:纳米团簇/纳米丝/纳米棒/纳米管的相关研究
  19. antd选择器下拉菜单样式修改
  20. Linux MISC驱动示例

热门文章

  1. 阿里云k8s私有仓库registry操作管理
  2. pods报错修复方法
  3. Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用...
  4. POJ3264Balanced Lineup(最基础的线段树)
  5. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.16
  6. C++编译器与链接器工作原理
  7. Oracle SQL Tips
  8. 无法装载文件或者汇编的AjaxControlToolkit
  9. Microsoft Surface--Bing™ Maps WPF Control
  10. C语言口令,某一本地口令验证函数(c语言环境,x86_32指令集)包含如下关键代码:某用户的口令保存在字符数组origpassw...