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-阿里云