DATETIME类型
功能描述
Vastbase G100在SQL Server兼容模式下支持数据类型DATETIME。该数据类型为时间类型,是结合了24小时制时间的日期,秒的精度为小数点后3位,其格式为yyyy-MM-dd HH:mm:ss.fff
。
注意事项
本特性仅在数据库兼容模式为SQL Server时能够使用(即创建DB时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。
SQL Server兼容模式下的DATETIME类型与其它兼容模式下的DATETIME类型并不完全相同,注意区分。
在SQL Server兼容模式下,DATETIME数据类型的别名为mssql_datetime。
类型转换
支持DATETIME类型到以下类型的显式转换:
数字类型:tinyint、smallint、int、bigint、real、float、decimal、numeric、smallmoney、money、bit
字符串类型:char()、varchar()、nchar()
时间类型:datetime2、smalldatetime、date、timestamp
支持DATETIME类型到以下类型的隐式转换:
数字类型:tinyint、smallint、int、bigint、real、float、decimal、numeric、smallmoney、money、bit
字符串类型:char()、varchar()、nchar()
时间类型:datetime2、datetime、smalldatetime、date、time、timestamp
支持以下类型到DATETIME类型的显式转换:
字符串类型:char()、varchar()、nchar()
时间类型:datetime2、smalldatetime、date、timestamp
支持以下类型到DATETIME类型的隐式转换:
数字类型:tinyint、smallint、int、bigint、real、float、decimal、numeric、smallmoney、money、bit
字符串类型:char()、varchar()、nchar()
时间类型:datetime2、datetime、smalldatetime、date、time、timestamp
DATETIME类型与数字类型之间的转换规则为:距离
1900-01-01 00:00:00
的天数。
示例
前置条件: 创建并切换至兼容模式为SQL Server的数据库下。
create database my_test with dbcompatibility='MSSQL';
\c my_test
示例1: 进行以下字符类型到datetime类型的显示转换。
select '1900-01-08 12:00:00.555'::char(30)::datetime;
select '1900-01-08 12:00:00.555'::varchar(30)::datetime;
select '1900-01-08 12:00:00.555'::nchar(30)::datetime;
返回结果为:
mssql_datetime
-------------------------
1900-01-08 12:00:00.555
(1 row)
mssql_datetime
-------------------------
1900-01-08 12:00:00.555
(1 row)
mssql_datetime
-------------------------
1900-01-08 12:00:00.555
(1 row)
示例2: 进行datetime类型到其他数据类型的隐式转换。
1、创建测试表。
create table t_datetime(id int,col datetime);
2、插入数据。
insert into t_datetime values(1,'1900-01-08 12:00:00.555'::char(30));
insert into t_datetime values(2,'1900-01-08 12:00:00.555'::varchar(30));
insert into t_datetime values(3,'1900-01-08 12:00:00.555'::nchar(30));
3、查看测试表中的数据。
select * from t_datetime;
返回结果如下,表示隐式转换成功。
id | col
----+-------------------------
1 | 1900-01-08 12:00:00.555
2 | 1900-01-08 12:00:00.555
3 | 1900-01-08 12:00:00.555
(3 rows)