久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

mysql TIMESTAMP 不能為NULL

 館天下ccf 2018-01-04

一般建表時(shí)候,,創(chuàng)建時(shí)間用datetime,,更新時(shí)間用timestamp。這是非常重要的,。


我測(cè)試了一下,,如果你的表中有兩個(gè)timestamp字段,只要你更新任何非timestamp字段的值,,則第一個(gè)timestamp列會(huì)更新成當(dāng)前時(shí)間,而第二人timestamp列的值不變,。


————————————————————————-
MySQL5日期類(lèi)型DATETIME和TIMESTAMP 相關(guān)問(wèn)題詳解

MySQL5的日期類(lèi)型有三種:DATETIME、DATE和TIMESTAMP,,除了DATE用來(lái)表示一個(gè)不帶時(shí)分秒的是日期,另外兩個(gè)都帶時(shí)分秒,。TIMESTAMP還可以精確到毫秒,。

其次還有個(gè)共性,就是他們的格式“不嚴(yán)格”,,很自由,,一般你認(rèn)為對(duì)的格式都可以正確插入到數(shù)據(jù)庫(kù)中。

這里主要解決帶時(shí)分秒日期的一些常見(jiàn)問(wèn)題,。

一,、IMESTAMP

1,、TIMESTAMP列必須有默認(rèn)值,默認(rèn)值可以為“0000-00-00 00:00:00”,,但不能為null,。
2、TIMESTAMP列不可以設(shè)置值,,只能由數(shù)據(jù)庫(kù)自動(dòng)去修改。
3,、一個(gè)表可以存在多個(gè)TIMESTAMP列,,但只有一個(gè)列會(huì)根據(jù)數(shù)據(jù)更新而改變?yōu)閿?shù)據(jù)庫(kù)系統(tǒng)當(dāng)前值。因此,,一個(gè)表中有多個(gè)TIMESTAMP 列是沒(méi)有意義,,實(shí)際上一個(gè)表只設(shè)定一個(gè)TIMESTAMP列,。
4,、TIMESTAMP列的默認(rèn)值是CURRENT_TIMESTAMP常量值,。當(dāng)紀(jì)錄數(shù)據(jù)發(fā)生變化的時(shí)候,,TIMESTAMP列會(huì)自動(dòng)將其值設(shè)定為CURRENT_TIMESTAMP,。
5,、TIMESTAMP列創(chuàng)建后的格式是:
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
這個(gè)語(yǔ)句含義,,a字段的默認(rèn)值是CURRENT_TIMESTAMP,,當(dāng)紀(jì)錄更新時(shí)候,自動(dòng)將a字段的值設(shè)置為 CURRENT_TIMESTAMP,。
6,、另外,下面的定義從語(yǔ)法角度是對(duì)的,,但是沒(méi)有意義,,因?yàn)樵撟侄蔚闹挡豢筛?,永遠(yuǎn)只能為默認(rèn)值,。
`b` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00′,

二、DATETIME

1,、DATETIME列可以設(shè)置為多個(gè),,默認(rèn)可為null,可以手動(dòng)設(shè)置其值。
2,、DATETIME列不可設(shè)定默認(rèn)值,,這是很多人煞費(fèi)苦心研究的成果,呵呵,!
3,、DATETIME列可以變相的設(shè)定默認(rèn)值,比如通過(guò)觸發(fā)器,、或者在插入數(shù)據(jù)時(shí)候,,將DATETIME字段值設(shè)置為now(),這樣可以做到了,,尤其是后者,,在程序開(kāi)發(fā)中常常用到。

一般建表時(shí)候,,創(chuàng)建時(shí)間用datetime,,更新時(shí)間用timestamp。
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(20) CHARACTER SET gbk NOT NULL,
sex tinyint(1) DEFAULT ‘1′,
state smallint(2) DEFAULT ‘1′,
createtime datetime NOT NULL,
updatetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

三,、日期最大值范圍的問(wèn)題

日期最大范圍的問(wèn)題不是絕對(duì)的,,很多人制定一個(gè)說(shuō)不能查過(guò)20XX年,這是扯蛋,,根本沒(méi)這回事,。日期的范圍等問(wèn)題與MySQL的運(yùn)行模式有關(guān)。當(dāng)然這個(gè)范圍很寬廣,,足夠祖宗十八代用了,,不用擔(dān)心這問(wèn)題了。

相反,,要注意的問(wèn)題是,,編程語(yǔ)言對(duì)日期范圍的限制,不同的語(yǔ)言,,有不同的限制,,這里不做討論了。

四,、日期格式轉(zhuǎn)換

1,、字符串轉(zhuǎn)日期
select STR_TO_DATE(‘2010-03-03 16:41:16′, ‘%Y-%m-%d %H:%i:%s’)

2、日期轉(zhuǎn)字符串
select DATE_FORMAT(‘2010-03-03 16:41:16′, ‘%Y-%m-%d %H:%i:%s’)

五,、日期的中年月日時(shí)分秒星期月份等獲取方法

select TIMESTAMP(‘2010-03-03 16:41:16′);

select DATE(‘2010-03-03 16:41:16′);

select YEAR(‘2010-03-03 16:41:16′);

select MONTH(‘2010-03-03 16:41:16′);

select DAY(‘2010-03-03 16:41:16′);

select TIME(‘2010-03-03 16:41:16′);

select CURTIME();

select CURDATE();

select CURRENT_DATE;

select CURRENT_TIME;

select CURRENT_TIMESTAMP;

方式很多,,這里簡(jiǎn)單列舉一二。

六,、日期的算術(shù)運(yùn)算

相關(guān)的函數(shù)很多很多,用法也很簡(jiǎn)單,一看就會(huì),,建議查看MySQL參考手冊(cè),。
mysql> SELECT DATE_ADD(‘1999-01-01′, INTERVAL 1 DAY);

-> ‘1999-01-02′

mysql> SELECT DATE_ADD(‘1999-01-01′, INTERVAL 1 HOUR);

-> ‘1999-01-01 01:00:00′

mysql> SELECT DATE_ADD(‘1998-01-30′, INTERVAL 1 MONTH);

-> ‘1998-02-28′

七、日期的大小比較

拿著日當(dāng)數(shù)字,,拿著字符串當(dāng)日期,,呵呵,很簡(jiǎn)單的,。
and update_time > ‘2010-03-02 16:48:41′
and update_time <= ‘2010-03-03 16:51:58′

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多