重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
通常,把数据库字段,设置为INT
成都创新互联公司从2013年创立,公司以成都网站设计、网站制作、外贸营销网站建设、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户成百上千家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。
时间用time()来保存进去,在显示的地方用date()来处理,这样子在以后的操作非常方便
其实,个人觉得你要保存时间没问题,针对于yyyy-MM,取时间的时候格式化下就可以了;
不过你一定要通过Java将yyyy-MM保存到数据库中取,可以定义为字符串,就是把他当成字符串而不是时间。
可以使用curdate()函数,current_date()函数等
例如:
insert into t1(oid,order_date) values('0010',curdate());
mysql储存时间有几种方式:
date 具体格式为2017-08-27,精确到天
datetime 具体格式为 2017-08-27 00:00:00,精确到秒
timestamp具体格式为 2017-08-27 00:00:00,精确到秒
int,具体格式为时间戳。
这些都是可以用来储存时间的,具体需要看项目的需求了。
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是保存不下“日期+时间”的,只能保存“时间”。
有相当一部分刚接触到
MySQL
的朋友都遇到这样一个相同的问题,就是关于毫秒的存储与显示。由于MySQL数据类型中只提供了DATETIME,
TIMESTAMP,
TIME,
DATE,
YEAR这几种时间类型,而且DATETIME
以及
TIMESTAMP
的最小单位是秒,没有存储毫秒级别的函数。
不过MySQL却能识别时间中的毫秒部分。而且我们有多种方式可以获得毫秒的部分,比如函数:microsecond
等。
我这里举一个简单的例子,来存储秒之前和之后的部分。
对于把时间字段作为主键的应用,我们可以建立以下的表来作相应的转化:
mysql
create
table
mysql_microsecond
(
log_time_prefix
timestamp
not
null
default
0,
log_time_suffix
mediumint
not
null
default
0)
engine
innnodb;
Query
OK,
rows
affected,
2
warnings
(0.00
sec)
mysql
alter
table
mysql_microsecond
add
primary
key
(log_time_prefix,
log_time_suffix);
Query
OK,
rows
affected
(0.01
sec)
Records:
Duplicates:
Warnings:
mysql
set
@a
=
convert(concat(now(),'.222009'),datetime);
Query
OK,
rows
affected
(0.00
sec)
mysql
insert
into
mysql_microsecond
select
date_format(@a,'%Y-%m-%d
%H-%i-%s'),date_format(@a,'%f');
Query
OK,
1
row
affected
(0.00
sec)
Records:
1
Duplicates:
Warnings:
mysql
select
*
from
mysql_microsecond;
+---------------------+-----------------+
|
log_time_prefix
|
log_time_suffix
|
+---------------------+-----------------+
|
2009-08-11
17:47:02
|
222009
|
+---------------------+-----------------+
1
row
in
set
(0.00
sec)
或者是用VARCHAR来存储所有的时间字段,
又或者是存储一个HASH来保证性能!
方法很多,就看你的应用怎么用合理了。