JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          當你需要同時包含日期和時間信息的值時則使用DATETIME類型。MySQL'YYYY-MM-DD HH:MM:SS'格式檢索和顯示DATETIME值。支持的范圍為'1000-01-01 00:00:00''9999-12-31 23:59:59'(支持”表示盡管先前的值可能工作,但沒有保證)

          當你只需要日期值而不需要時間部分時應使用DATE類型。MySQL'YYYY-MM-DD'格式檢索和顯示DATE值。支持的范圍是'1000-01-01''9999-12-31'

          TIMESTAMP列類型的屬性不固定,取決于MySQL版本和服務器運行的SQL模式。這些屬性將在本節后面描述。

          可以使用任何常見格式指定DATETIMEDATETIMESTAMP值:

          'YYYY-MM-DD HH:MM:SS''YY-MM-DD HH:MM:SS'格式的字符串。允許“不嚴格”語法:任何標點符都可以用做日期部分或時間部分之間的間割符。例如,'98-12-31 11:30:45''98.12.31 11+30+45''98/12/31 11*30*45''98@12@31 11^30^45'是等價的。

          'YYYY-MM-DD''YY-MM-DD'格式的字符串。這里也允許使用“不嚴格的”語法。例如,'98-12-31''98.12.31''98/12/31''98@12@31'是等價的。

          'YYYYMMDDHHMMSS''YYMMDDHHMMSS'格式的沒有間割符的字符串,假定字符串對于日期類型是有意義的。例如,'19970523091528''970523091528'被解釋為'1997-05-23 09:15:28',但'971122129015'是不合法的(它有一個沒有意義的分鐘部分),將變為'0000-00-00 00:00:00'

          'YYYYMMDD''YYMMDD'格式的沒有間割符的字符串,假定字符串對于日期類型是有意義的。例如,'19970523''970523'被解釋為 '1997-05-23',但'971332'是不合法的(它有一個沒有意義的月和日部分),將變為'0000-00-00'

          YYYYMMDDHHMMSSYYMMDDHHMMSS格式的數字,假定數字對于日期類型是有意義的。例如,19830905132800830905132800被解釋為 '1983-09-05 13:28:00'

          YYYYMMDDYYMMDD格式的數字,假定數字對于日期類型是有意義的。例如,19830905830905被解釋為'1983-09-05'

          函數返回的結果,其值適合DATETIMEDATE或者TIMESTAMP上下文,例如NOW()CURRENT_DATE

          無效DATETIMEDATE或者TIMESTAMP值被轉換為相應類型的“”值('0000-00-00 00:00:00''0000-00-00'或者00000000000000)

          對于包括日期部分間割符的字符串值,如果日和月的值小于10,不需要指定兩位數。'1979-6-9''1979-06-09'是相同的。同樣,對于包括時間部分間割符的字符串值,如果時、分和秒的值小于10,不需要指定兩位數。'1979-10-30 1:2:3''1979-10-30 01:02:03'相同。

          數字值應為6812或者14位長。如果一個數值是814位長,則假定為YYYYMMDDYYYYMMDDHHMMSS格式,前4位數表示年。如果數字 是612位長,則假定為YYMMDDYYMMDDHHMMSS格式,前2位數表示年。其它數字被解釋為仿佛用零填充到了最近的長度。

          指定為非限定符字符串的值使用給定的長度進行解釋。如果字符串為814字符長,前4位數表示年。否則,前2位數表示年。從左向右解釋字符串內出現的各部分,以發現年、月、日、小時、分和秒值。這說明不應使用少于6字符的字符串。例如,如果你指定'9903',認為它表示19993月,MySQL將在你的表內插入一個“”日期值。這是因為年和月值是9903,但日部分完全丟失,因此該值不是一個合法的日期。但是,可以明顯指定一個零值來代表缺少的月或日部分。例如,可以使用'990300'來插入值'1999-03-00'

          在一定程度上,可以將一個日期類型的值分配給一個不同的日期類型。但是,值可能會更改或丟失一些信息:

          如果你為一個DATETIMETIMESTAMP對象分配一個DATE值,結果值的時間部分被設置為'00:00:00',因為DATE值未包含時間信息。

          如果你為一個DATE對象分配一個DATETIMETIMESTAMP值,結果值的時間部分被刪除,因為DATE值未包含時間信息。

          記住盡管可以使用相同的格式指定DATETIMEDATETIMESTAMP值,不同類型的值的范圍卻不同。例如,TIMESTAMP值不能早于1970或晚于2037。這說明一個日期,例如'1968-01-01',雖然對于DATETIMEDATE值是有效的,但對于TIMESTAMP值卻無效,如果分配給這樣一個對象將被轉換為0

          當指定日期值時請注意某些缺陷:

          指定為字符串的值允許的非嚴格格式可能會欺騙。例如,值'10:11:12'由于‘:’間割符看上去可能象時間值,但如果用于日期上下文值則被解釋為年'2010-11-12'。值'10:45:15'被轉換為'0000-00-00'因為'45'不是合法月。

          在非嚴格模式,MySQL服務器只對日期的合法性進行基本檢查:年、月和日的范圍分別是1000999900120031。任何包含超出這些范圍的部分的日期被轉換成'0000-00-00'。請注意仍然允許你保存非法日期,例如'2002-04-31'。要想確保不使用嚴格模式時日期有效,應檢查應用程序。

          在嚴格模式,非法日期不被接受,并且不轉換。

          包含兩位年值的日期會令人模糊,因為世紀不知道。MySQL使用以下規則解釋兩位年值:

          00-69范圍的年值轉換為2000-2069

          70-99范圍的年值轉換為1970-1999

          posted on 2010-04-24 07:57 rogerfan 閱讀(15911) 評論(0)  編輯  收藏 所屬分類: 【數據庫】
          主站蜘蛛池模板: 宜黄县| 安乡县| 新龙县| 漳平市| 通化县| 尚义县| 恩施市| 红桥区| 民权县| 广河县| 偏关县| 沂源县| 旺苍县| 宣汉县| 张家川| 贡山| 疏勒县| 彭水| 榆中县| 阿克苏市| 韩城市| 都匀市| 巴东县| 哈尔滨市| 武乡县| 毕节市| 夏邑县| 连山| 桐柏县| 祁连县| 昌乐县| 习水县| 漠河县| 敦煌市| 鹤岗市| 定陶县| 建水县| 青河县| 平谷区| 牙克石市| 余姚市|