Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 参考 » SQL 数据类型 » 数据类型转换 » 数据类型之间的比较

 

比较日期和时间

下表汇总了比较某些数据类型与日期、时间或日期时间数据类型时的一些隐式转换。

数据类型 数据类型 转换
CHAR DATE CHAR 转换为 TIMESTAMP;DATE 转换为 TIMESTAMP
CHAR TIME CHAR 转换为 TIME
CHAR TIMESTAMP CHAR 转换为 TIMESTAMP
CHAR TIMESTAMP WITH TIME ZONE CHAR 转换为 TIMESTAMP WITH TIME ZONE
DATE TIME 非法
DATE TIMESTAMP DATE 转换为 TIMESTAMP
DATE TIMESTAMP WITH TIME ZONE DATE 转换为 TIMESTAMP WITH TIME ZONE
DATE SMALLINT、INTEGER、BIGINT 和 NUMERIC SMALLINT、INTEGER、BIGINT 和 NUMERIC 值用作日期字符串并转换为 TIMESTAMP;DATE 转换为 TIMESTAMP
DATE REAL、FLOAT 和 DOUBLE REAL、FLOAT 和 DOUBLE 用作距 0000-02-29 之后的天数并转换为 TIMESTAMP;DATE 转换为 TIMESTAMP
TIME TIMESTAMP TIMESTAMP 转换为 TIME
TIME TIMESTAMP WITH TIME ZONE 非法
TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP 转换为 TIMESTAMP WITH TIME ZONE
TIMESTAMP SMALLINT、INTEGER、BIGINT 和 NUMERIC SMALLINT、INTEGER、BIGINT 和 NUMERIC 值用作日期字符串并转换为 TIMESTAMP
TIMESTAMP REAL、FLOAT 和 DOUBLE REAL、FLOAT 和 DOUBLE 用作距 0000-02-29 之后的天数并转换为 TIMESTAMP

以下几点详述了上表中介绍的信息。

  1. 只有 TIME、TIMESTAMP 和 CHAR 类型的值能够与 TIME 类型的值进行比较。与其它数据类型的值比较将导致转换错误。比较时间值和其它类型的值时,比较数据类型为 TIME。

  2. 将 TIMESTAMP、SMALLINT、INTEGER、BIGINT、NUMERIC、REAL、FLOAT 或 DOUBLE 值与 DATE 值进行比较时,比较数据类型始终为 TIMESTAMP。

  3. 比较 TIMESTAMP WITH TIME ZONE 值与 DATE 值时,比较数据类型为 TIMESTAMP WITH TIME ZONE。

  4. 将时间值转换为 TIMESTAMP 时,结果由当前日期和时间值组合而成。

  5. SMALLINT、INTEGER、BIGINT 和 NUMERIC 类型的精确数值可以转换为日期值。执行该转换时会将数字视为字符串。例如,整数值 20100401 表示 2010 年四月的第一天。

  6. 无符号精确数值类型 BIT、TINYINT、UNSIGNED SMALLINT、UNSIGNED INTEGER 和 UNSIGNED BIGINT 无法转换为日期值。

  7. 对于 REAL、FLOAT 和 DOUBLE 类型的近似数值,可通过将其视为距虚构日期 0000-02-29 之后的天数来转换为日期。例如,307 表示 0001-01-01 而 734169 表示 2010-04-01。

 另请参见