<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## MySQL中日期類型的復習 >[info] MySQL5的日期類型有三種:DATETIME、DATE和TIMESTAMP,除了DATE用來表示一個不帶時分秒的是日期,另外兩個都帶時分秒。TIMESTAMP還可以精確到毫秒。 * 其次還有個共性,就是他們的格式“不嚴格”,很自由,一般你認為對的格式都可以正確插入到數據庫中。 * 這里主要解決帶時分秒日期的一些常見問題。 * * * * * #### 一、TMESTAMP 1. TIMESTAMP列必須有默認值,默認值可以為“0000-00-00 00:00:00”,但不能為null。 2. TIMESTAMP列不可以設置值,只能由數據庫自動去修改。 3. 一個表可以存在多個TIMESTAMP列,但只有一個列會根據數據更新而改變為數據庫系統當前值。因此,一個表中有多個TIMESTAMP 列是沒有意義,實際上一個表只設定一個TIMESTAMP列。 4. TIMESTAMP列的默認值是CURRENT_TIMESTAMP常量值。當紀錄數據發生變化的時候,TIMESTAMP列會自動將其值設定為CURRENT_TIMESTAMP。 5. TIMESTAMP列創建后的格式是: `字段名 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,` > 這個語句含義,a字段的默認值是CURRENT_TIMESTAMP,當紀錄更新時候,自動將a字段的值設置為 CURRENT_TIMESTAMP。 6. 另外,下面的定義從語法角度是對的,但是沒有意義,因為該字段的值不可更改,永遠只能為默認值。 `字段名 timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00′,` 7. 常用格式: |序號| 列類型  | 顯示格式    |實例| |---|---|---| |1 |TIMESTAMP(14) | YYYYMMDDHHMMSS | 2016-12-01 20:25:38 | |2 |TIMESTAMP(12) | YYMMDDHHMMSS  |2016-12-01 20:25| |3 |TIMESTAMP(10) | YYMMDDHHMM   |2016-12-01 20| | 4|TIMESTAMP(8) | YYYYMMDD    |2016-12-01| | 5|TIMESTAMP(6) | YYMMDD     |2016-12| |6 |TIMESTAMP(4) | YYMM      |2016| |7 |TIMESTAMP(2) | YY       |16| 1. 雖然你建表時定義了列TIMESTAMP(8),但在你進行數據插入與更新時TIMESTAMP列,實際上保存了14位的數據(包括年月日時分秒),只不過在你進行查詢時MySQL返回給你的是8位的年月日數據。如果你使用ALTER TABLE拓寬一個狹窄的TIMESTAMP列,以前被“隱蔽”的信息將被顯示。 2. 同樣,縮小一個TIMESTAMP列不會導致信息失去,除了感覺上值在顯示時,較少的信息被顯示出。 3. 盡管TIMESTAMP值被存儲為完整精度,直接操作存儲值的唯一函數是UNIX_TIMESTAMP();由于MySQL返回TIMESTAMP列的列值是進過格式化后的檢索的值,這意味著你可能不能使用某些函數來操作TIMESTAMP列(例如HOUR()或SECOND()),除非TIMESTAMP值的相關部分被包含在格式化的值中。 >[info]例如,一個TIMESTAMP列只有被定義為TIMESTAMP(10)以上時,TIMESTAMP列的HH部分才會被顯示, 因此在更短的TIMESTAMP值上使用HOUR()會產生一個不可預知的結果。 4. 不合法TIMESTAMP值被變換到適當類型的“零”值(00000000000000)。(DATETIME,DATE亦然) * * * * * #### 二、DATETIME 1. DATETIME列可以設置為多個,默認可為null,可以手動設置其值。 2. DATETIME列不可設定默認值,這是很多人煞費苦心研究的成果,呵呵! 3. DATETIME列可以變相的設定默認值,比如通過觸發器、或者在插入數據時候,將DATETIME字段值設置為now(),這樣可以做到了,尤其是后者,在程序開發中常常用到。 >[warning] 一般建表時候,創建時間用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 ~~~ #### DATE與DATETIME基本一致,僅是顯示信息豐富些,不再介紹~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看