方法/步驟 select curDate(); #獲取當(dāng)前日期select curTime(); #獲取當(dāng)前時(shí)間select now(); #獲取當(dāng)前日期+時(shí)間 列舉1個(gè)天數(shù)加減的例子,其他的看英文意思就可以理解了 select date_add(now(), interval 1 day); #當(dāng)前日期天數(shù)+1 select date_add(now(), interval -1 day); #當(dāng)前日期天數(shù)-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); #當(dāng)前日期天數(shù)-select date_sub(now(), interval -1 day); #當(dāng)前日期天數(shù)+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函數(shù)計(jì)算兩個(gè)日期間隔的天數(shù) datediff(date1, date2); #date1 - date2 timediff函數(shù)計(jì)算兩個(gè)時(shí)間間隔 timediff(time1, time2); #time1 - time2 time1和time2的格式必須要一樣,返回時(shí)間差 str_to_date(str, format) 字符串轉(zhuǎn)換為日期 select str_to_date('11/09/2014', '%m/%d/%Y'); -- 2014-11-09
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、西城ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的西城網(wǎng)站制作公司
--
方法一:
由于MySQL目前
字段
的
默認(rèn)值
不支持
函數(shù)
,所以以create_time
datetime
default
now()
的形式設(shè)置默認(rèn)值是不可能的。代替的
方案
是使用TIMESTAMP類型代替DATETIME類型。
TIMESTAMP列類型自動(dòng)地用當(dāng)前的
日期
和時(shí)間
標(biāo)記
INSERT或UPDATE的操作。如果有多個(gè)TIMESTAMP列,只有第一個(gè)自動(dòng)更新。
自動(dòng)更新第一個(gè)TIMESTAMP列在下列任何條件下發(fā)生:
1.列值沒(méi)有明確地在一個(gè)INSERT或LOAD
DATA
INFILE語(yǔ)句中指定。
2.列值沒(méi)有明確地在一個(gè)UPDATE語(yǔ)句中指定且另外一些的列改變值。(注意一個(gè)UPDATE設(shè)置一個(gè)列為它已經(jīng)有的值,這將不引起TIMESTAMP列被更新,因?yàn)槿绻阍O(shè)置一個(gè)列為它當(dāng)前的值,MySQL為了效率而忽略更改。)
3.你明確地設(shè)定TIMESTAMP列為NULL.
4.除第一個(gè)以外的TIMESTAMP列也可以設(shè)置到當(dāng)前的日期和時(shí)間,只要將列設(shè)為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下操作的話,將字段設(shè)置為timestamp,然后默認(rèn)值寫上CURRENT_TIMESTAMP即可
java中有date和datetime,mysql中也有date和datetime,這里我們來(lái)說(shuō)說(shuō)mysql中的date和datetime。
1 mysql中的date和datetime
1.1 DATETIME
類型可用于需要同時(shí)包含日期和時(shí)間信息的值。MySQL 以:
‘YYYY-MM-DD HH:MM:SS’
格式檢索與顯示 DATETIME 類型。支持的范圍是:
‘1000-01-01 00:00:00’
到
‘9999-12-31 23:59:59’。
(“支持”的含義是,盡管更早的值可能工作,但不能保證他們均可以。)
1.2 DATE
類型可用于需要一個(gè)日期值而不需要時(shí)間部分時(shí)。MySQL 以
‘YYYY-MM-DD’
格式檢索與顯示DATE值。支持的范圍則是
‘1000-01-01’
到
‘9999-12-31’。
2 與java數(shù)據(jù)的交互
能看出來(lái)mysql中的date和datetime區(qū)別還是挺大的,date沒(méi)有保存時(shí)間。但是java中的date(java.util.Date)記錄的還是挺細(xì)的,日期和時(shí)間都可以記下來(lái),那么現(xiàn)在問(wèn)題來(lái)了,如果想在mysql中存儲(chǔ)日期和時(shí)間,也就是用datetime,而在數(shù)據(jù)中應(yīng)該如何對(duì)應(yīng)呢?
我使用hibernate測(cè)了一下,發(fā)現(xiàn)當(dāng)把mysql數(shù)據(jù)庫(kù)中設(shè)置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" /1
反向生成java的pojo時(shí),生成的還是Date。
由此可見(jiàn)對(duì)于mysql中datetime,與java中的date,如果要使二者正確交互,中間要使用timestamp。
如果要在JAVA中直接插入MySql的datetime類型,則可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()設(shè)置數(shù)據(jù)庫(kù)中的“日期+時(shí)間”。
這樣放入數(shù)據(jù)庫(kù)的就是“yyyy-mm-dd hh:mm:ss”格式的數(shù)據(jù)。
注意,mysql中如果使用date而不是datetime是保存不下“日期+時(shí)間”的,只能保存“時(shí)間”。
Mysql中經(jīng)常用來(lái)存儲(chǔ)日期的數(shù)據(jù)類型有三種:Date、Datetime、Timestamp。
Date數(shù)據(jù)類型:用來(lái)存儲(chǔ)沒(méi)有時(shí)間的日期。Mysql獲取和顯示這個(gè)類型的格式為“YYYY-MM-DD”。支持的時(shí)間范圍為“1000-00-00”到“9999-12-31”。
Datetime類型:存儲(chǔ)既有日期又有時(shí)間的數(shù)據(jù)。存儲(chǔ)和顯示的格式為 “YYYY-MM-DD HH:MM:SS”。支持的時(shí)間范圍是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp類型:也是存儲(chǔ)既有日期又有時(shí)間的數(shù)據(jù)。存儲(chǔ)和顯示的格式跟Datetime一樣。支持的時(shí)間范圍是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的數(shù)據(jù)都會(huì)被轉(zhuǎn)換為相應(yīng)類型的0值。(0000-00-00或者0000-00-00 00:00:00)