482
阿裏雲
時間日期類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲
日期和時間類型 | 格式 | 範圍 | 大小(字節) |
DATE | YYYY-MM-DD | ‘1000-01-01’到‘9999-12-31’ | 3 |
DATETIME | YYYY-MM-DD HH:MM:SS | ‘1000-01-01 00:00:00’到 ‘9999-12-31 23:59:59’ | 5+秒精度存儲 (實際存儲:8字節) |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | ‘1970-01-01 00:00:00’到 ‘2037-12-31 23:59:59’ | 4+秒精度存儲 (實際存儲:8字節 |
TIME | HH:MM:SS | ‘-838:59:59’到‘838:59:59’ | 3+秒精度存儲 (實際存儲:6字節) |
YEAR | YYYY(默認格式) | ‘1901到2155’和‘0000’ | 1 |
YY | ‘70到69’,表示從1970年到2069年。 |
在日期和時間函數中,DATETIME、TIMESTAMP、TIME類型,默認是精確到秒,還支持指定秒精度參數,秒精度存儲根據存儲需求最大支持微妙(3字節),秒精度存儲根據精度不同,占用空間取0-3字節。
形如:type_name(fsp)。
type_name 表示DATETIME、TIMESTAMP、TIME等類型。
fsp參數是表示秒精度,取值範圍為:0-6。默認值取0;最大值為6,表示精確到微妙。
DATE
日期。支持的範圍為‘1000-01-01’到‘9999-12-31’。以‘YYYY-MM-DD’格式顯示DATE值,但允許使用字符串或數字為DATE列分配值。
DATETIME
DATETIME[(fsp)]
日期和時間的組合。支持的範圍是‘1000-01-01 00:00:00.000000’到‘9999-12-31 23:59:59.000000’。以‘YYYY-MM-DD HH:MM:SS[.fraction] ’格式顯示DATETIME值,但允許使用字符串或數字為DATETIME列分配值。fsp參數是表示秒精度,取值範圍為:0-6。默認值取0;最大值為6,表示精確到微妙。
DATETIME 數據類型和 TIMESTAMP 數據類型都支持 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 子句。
TIMESTAMP
TIMESTAMP[(fsp)]
這個數據類型與MySQL不完全一致,主要是在OceanBase 1.0裏TIMESTAMP類型的格式是按嚴格模式來判斷,不允許“0000-00-00 00:00:00”等非法值。
下列字符串類型是不合法的:
‘2012^12^32’ ‘20070523’ ‘070523’ ‘071332’
下列整數類型同樣是不合法的:
19830905 830905
DEFAULT CURRENT_TIMESTAMP,ON UPDATE CURRENT_TIMESTAMP 子句
用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,列默認使用當前的時間戳,並且自動更新;如果默認值設定為其他值(如0或NULL),則不會自動更新時間戳。
TIME
TIME[(fsp)]
時間。範圍是 ‘-838:59:59.000000’到‘838:59:59.000000’。以‘HH:MM:SS[.fraction]’格式顯示TIME值,但允許使用字符串或數字為TIME列分配值。fsp參數是表示秒精度,取值範圍為:0-6。默認值取0;最大值為6,表示精確到微妙。
‘D HH:MM:SS[.fraction]’格式的字符串。還可以使用下麵任何一種“非嚴格”語法:‘H:MM:SS[.fraction]’、‘HH:MM:SS’、‘HH:MM’、‘D HH:MM:SS’、‘D HH:MM’、‘D HH’或‘SS’。這裏D表示日,可以取0到34之間的值。
‘HHMMSS’格式的沒有間割符的字符串,假定是有意義的時間。例如,‘101112’被理解為‘10:11:12’,但‘109712’是不合法的(它有一個沒有意義的分鍾部分),將變為‘00:00:00’。
HHMMSS格式的數值,假定是有意義的時間。例如,101112被理解為‘10:11:12’。下麵格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。
函數返回的結果,其值適合TIME上下文,例如CURRENT_TIME。
對於指定為包括時間部分間割符的字符串的TIME值,如果時、分或者秒值小於10,則不需要指定兩位數。‘8:3:2’與‘08:03:02’相同。
為TIME列分配簡寫值時應注意。沒有冒號,解釋值時假定最右邊的兩位表示秒。(解釋TIME值為過去的時間而不是當天的時間)。例如,你可能認為‘1112’和1112表示‘11:12:00’(11點過12分),係統中將它們解釋為‘00:11:12’(11分,12 秒)。同樣,‘12’和12 被解釋為 ‘00:00:12’。相反,TIME值中使用冒號則肯定被看作當天的時間。也就是說,‘11:12’表示‘11:12:00’,而不是‘00:11:12’。
超出TIME範圍但合法的值被裁為範圍最接近的端點。例如,‘-850:00:00’和‘850:00:00’被轉換為‘-838:59:59’和‘838:59:59’。
無效TIME值被轉換為‘00:00:00’。請注意由於‘00:00:00’本身是一個合法TIME值,隻從表內保存的一個‘00:00:00’值還不能說出原來的值是 ‘00:00:00’還是不合法的值。
YEAR
兩位或四位格式的年。默認是四位格式。在四位格式中,允許的值是1901到2155和0000。在兩位格式中,允許的值是70到69,表示從1970年到2069年。以YYYY 格式顯示YEAR值,但允許使用字符串或數字為YEAR列分配值。
可以指定各種格式的YEAR值:
四位字符串,範圍為‘1901’到‘2155’。
四位數字,範圍為1901到2155。
兩位字符串,範圍為‘00’到‘99’。‘00’到‘69’和‘70’到‘99’範圍的值被轉換為2000到2069和1970到1999範圍的YEAR值。
兩位整數,範圍為1到99。1到69和70到99範圍的值被轉換為2001到2069和1970到1999範圍的YEAR值。請注意兩位整數範圍與兩位字符串範圍稍有不同,因為你不能直接將零指定為數字並將它解釋為2000。你必須將它指定為一個字符串‘0’或‘00’或它被解釋為0000。
函數返回的結果,其值適合YEAR上下文,例如NOW()。
非法YEAR值被轉換為0000。
對於DATETIME、DATE、TIMESTAMP和YEAR類型,OceanBase使用以下規則解釋含模煳年值的日期:
00-69範圍的年值轉換為2000-2069。
70-99範圍的年值轉換為1970-1999。
ORDER BY可以正確排序有兩位年的TIMESTAMP或YEAR值。
部分函數如MIN()和MAX()將TIMESTAMP或YEAR轉換為一個數字。這說明使用有兩位年值的值,這些函數不能工作正確。在這種情況下的修複方法是將TIMESTAMP或YEAR轉換為四位年格式或使用MIN(DATE_ADD(TIMESTAMP,INTERVAL 0 DAYS))。
最後更新:2016-11-24 11:23:47
上一篇:
字符串類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲
下一篇:
邏輯運算符__運算符_SQL語法參考_雲數據庫 OceanBase-阿裏雲
雲服務器 ECS Windows創建實例
無法訪問ECS上的網站
推送通知給iOS__API列表_OpenAPI 1.0_移動推送-阿裏雲
SetLoadBalancerStatus__LoadBalancer相關API_API 參考_負載均衡-阿裏雲
隊列模型名詞解釋__產品名詞解釋_產品簡介_消息服務-阿裏雲
網站監控__產品使用手冊_雲解析-阿裏雲
Spark + HBase__Spark_開發人員指南_E-MapReduce-阿裏雲
綁定標簽__標簽相關接口_API 參考_雲服務器 ECS-阿裏雲
AttachPolicyToUser__授權策略管理接口_RAM API文檔_訪問控製-阿裏雲
DescribeLoadBalancerHTTPSListenerAttribute__Listener相關API_API 參考_負載均衡-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲