mysql date数据输入的时候 如果是日月年,应该怎么才能识别

mysql date数据输入的时候 如果是日月年,应该怎么才能识别,第1张

0

先理解下格式问题

要理解两种格式,一是mysql内部使用和存储时使用的格式,另一个是用户显示的格式;

存储格式:mysql保存日期时间值时使用的CCYY-MM-DD格式遵循ISO

8601标准;

显示格式:显示在输出界面上的格式,可以使用DATA_FORMAT()或TIME_FORMAT()函数来设置和转换;

1

转换和处理

1)提交数据,一是使用标准格式让其自动识别,二是对输入值进行格式指定和转换

insert

into

t

(d)

values('2012-01-01')

#使用默认ansi标准格式,让数据库自动识别字串为日期;

insert

into

t

(d)

values(

STR_TO_DATE('2012/February/01',

'%Y/%M/%d')

)

#使用字符转换为日期的函数来处理自定义格式的输入值;

2)查询数据,一是不使用格式(即使用默认的CCYY-MM-DD格式),二是指定输出格式

select

current_date()

#默认格式

select

date_format(current_date(),

''%Y/%M/%d'')

#使用自定义格式,具体参考下date_format的帮助,主要是格式控制符的使用。

2

格式化参数

DATE_FORMAT(),

TIME_FORMAT(),

STR_TO_DATE()这三个函数都接受格式化串作为参数来格式化日期时间

常用的格式化字符:

%Y

4位数字年份

2012

%y

2位数字年份

12

%M

完整英文月份名称,January

-

December

%b

月份名称前三个字母,Jan

-

Dec

%m

2位数字月份

01-12

%c

最小位数字月份

1-12

%d

2位数字日期

01-31

%e

最小位数字日期

1-31

%W

工作日名称

Sunday

-

Saturday

%r

12小时制时间,以AM或PM结尾

%T

24小时制时间

%H

24小时制小时

00-23

%i

2位数字分钟

00-59

%s

2位数字秒数

00-59

%%

%文字字符

java中有date和datetime,mysql中也有date和datetime,这里我们来说说mysql中的date和datetime。

1 mysql中的date和datetime

1.1 DATETIME

类型可用于需要同时包含日期和时间信息的值。MySQL 以:

‘YYYY-MM-DD HH:MM:SS’

格式检索与显示 DATETIME 类型。支持的范围是:

‘1000-01-01 00:00:00’

‘9999-12-31 23:59:59’。

(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)

1.2 DATE

类型可用于需要一个日期值而不需要时间部分时。MySQL 以

‘YYYY-MM-DD’

格式检索与显示DATE值。支持的范围则是

‘1000-01-01’

‘9999-12-31’。

2 与java数据的交互

能看出来mysql中的date和datetime区别还是挺大的,date没有保存时间。但是java中的date(java.util.Date)记录的还是挺细的,日期和时间都可以记下来,那么现在问题来了,如果想在mysql中存储日期和时间,也就是用datetime,而在数据中应该如何对应呢?

我使用hibernate测了一下,发现当把mysql数据库中设置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:

<property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" />1

反向生成java的pojo时,生成的还是Date。

由此可见对于mysql中datetime,与java中的date,如果要使二者正确交互,中间要使用timestamp。

如果要在JAVA中直接插入MySql的datetime类型,则可以使用:

Date date = new Date()

Timestamp timeStamp = new Timestamp(date.getTime())12

再用setTimestamp()设置数据库中的“日期+时间”。

这样放入数据库的就是“yyyy-mm-dd hh:mm:ss”格式的数据。

注意,mysql中如果使用date而不是datetime是保存不下“日期+时间”的,只能保存“时间”。

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5896627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存