日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL5日期类型DATETIME和TIMESTAMP相关问题详解

發布時間:2024/4/11 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL5日期类型DATETIME和TIMESTAMP相关问题详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://lavasoft.blog.51cto.com/62575/280284

MySQL5日期類型DATETIME和TIMESTAMP相關問題詳解MySQL5的日期類型有三種:DATETIME、DATE和TIMESTAMP,除了DATE用來表示一個不帶時分秒的是日期,另外兩個都帶時分秒。TIMESTAMP還可以精確到毫秒。其次還有個共性,就是他們的格式“不嚴格”,很自由,一般你認為對的格式都可以正確插入到數據庫中。這里主要解決帶時分秒日期的一些常見問題。一、IMESTAMP1、TIMESTAMP列必須有默認值,默認值可以為“0000-00-00 00:00:00”,但不能為null。2、TIMESTAMP列不可以設置值,只能由數據庫自動去修改。3、一個表可以存在多個TIMESTAMP列,但只有一個列會根據數據更新而改變為數據庫系統當前值。因此,一個表中有多個TIMESTAMP列是沒有意義,實際上一個表只設定一個TIMESTAMP列。4、TIMESTAMP列的默認值是CURRENT_TIMESTAMP常量值。當紀錄數據發生變化的時候,TIMESTAMP列會自動將其值設定為CURRENT_TIMESTAMP。5、TIMESTAMP列創建后的格式是:`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,這個語句含義,a字段的默認值是CURRENT_TIMESTAMP,當紀錄更新時候,自動將a字段的值設置為CURRENT_TIMESTAMP。6、另外,下面的定義從語法角度是對的,但是沒有意義,因為該字段的值不可更改,永遠只能為默認值。`b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',二、DATETIME1、DATETIME列可以設置為多個,默認可為null,可以手動設置其值。2、DATETIME列不可設定默認值,這是很多人煞費苦心研究的成果,呵呵!3、DATETIME列可以變相的設定默認值,比如通過觸發器、或者在插入數據時候,將DATETIME字段值設置為now(),這樣可以做到了,尤其是后者,在程序開發中常常用到。一般建表時候,創建時間用datetime,更新時間用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三、日期最大值范圍的問題日期最大范圍的問題不是絕對的,很多人制定一個說不能查過20XX年,這是扯蛋,根本沒這回事。日期的范圍等問題與MySQL的運行模式有關。當然這個范圍很寬廣,足夠祖宗十八代用了,不用擔心這問題了。相反,要注意的問題是,編程語言對日期范圍的限制,不同的語言,有不同的限制,這里不做討論了。四、日期格式轉換1、字符串轉日期select STR_TO_DATE('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')2、日期轉字符串select DATE_FORMAT('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')五、日期的中年月日時分秒星期月份等獲取方法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;方式很多,這里簡單列舉一二。六、日期的算術運算相關的函數很多很多,用法也很簡單,一看就會,建議查看MySQL參考手冊。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'七、日期的大小比較拿著日當數字,拿著字符串當日期,呵呵,很簡單的。and update_time > '2010-03-02 16:48:41'
???? and update_time <= '2010-03-03 16:51:58'搞明白這些,參考MySQL指南,日期問題輕松搞定。

轉載于:https://www.cnblogs.com/k1988/archive/2011/07/07/2165587.html

總結

以上是生活随笔為你收集整理的MySQL5日期类型DATETIME和TIMESTAMP相关问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。