扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
方法/步骤 select curDate(); #获取当前日期select curTime(); #获取当前时间select now(); #获取当前日期+时间 列举1个天数加减的例子,其他的看英文意思就可以理解了 select date_add(now(), interval 1 day); #当前日期天数+1 select date_add(now(), interval -1 day); #当前日期天数-1 select date_add(now(), interval 1 hour); select date_add(now(), interval 1 minute); select date_add(now(), interval 1 second); select date_add(now(), interval 1 microsecond); select date_add(now(), interval 1 week); select date_add(now(), interval 1 month); select date_add(now(), interval 1 quarter); select date_add(now(), interval 1 year); date_sub与date_add功能整合相反 select date_sub(now(), interval 1 day); #当前日期天数-select date_sub(now(), interval -1 day); #当前日期天数+select date_sub(now(), interval 1 hour); select date_sub(now(), interval 1 minute)select date_sub(now(), interval 1 second)select date_sub(now(), interval 1 microsecond)select date_sub(now(), interval 1 week)select date_sub(now(), interval 1 month)select date_sub(now(), interval 1 quarter)select date_sub(now(), interval 1 year); datediff函数计算两个日期间隔的天数 datediff(date1, date2); #date1 - date2 timediff函数计算两个时间间隔 timediff(time1, time2); #time1 - time2 time1和time2的格式必须要一样,返回时间差 str_to_date(str, format) 字符串转换为日期 select str_to_date('11/09/2014', '%m/%d/%Y'); -- 2014-11-09
我们提供的服务有:成都做网站、网站建设、微信公众号开发、网站优化、网站认证、西城ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的西城网站制作公司
--
方法一:
由于MySQL目前
字段
的
默认值
不支持
函数
,所以以create_time
datetime
default
now()
的形式设置默认值是不可能的。代替的
方案
是使用TIMESTAMP类型代替DATETIME类型。
TIMESTAMP列类型自动地用当前的
日期
和时间
标记
INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
1.列值没有明确地在一个INSERT或LOAD
DATA
INFILE语句中指定。
2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3.你明确地设定TIMESTAMP列为NULL.
4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
所以把日期类型
选择成timestamp
允许空就可以了
CREATE
TABLE
test
(
uname
varchar(50)
NOT
NULL,
updatetime
timestamp
NULL
DEFAULTCURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可
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中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。
Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。
Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-00 00:00:00)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流