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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 参考 » SQL 数据类型 » 数据类型转换

 

不明确的日期和时间转换

yyyy/mm/ddyyyy-mm-dd 格式的日期总是会被明确地识别为日期,而与 date_order 设置无关。可以使用其它字符代替正斜线 (/) 或连字符 (-) 作为分隔符;例如问号 (?)、空格字符或逗号 (,)。在任何不同的用户可能会采用不同 date_order 设置的环境中,都应使用此格式。例如,在存储过程中,使用明确的日期格式可以防止按照用户的 date_order 设置错误地解释日期。

此外,hh:mm:ss.ssssss 格式的字符串将明确地解释为时间。

对于日期和时间的组合,任何明确的日期和任何明确的时间都会产生明确的日期时间值。yyyy-mm-ddThh:mm:ss.ssssss 格式是明确的日期时间值。如果给出明确的格式 yyyy-mm-dd hh:mm:ss.ssssss,则可以省略日期时间分隔符 T。如果给出明确的格式 yyyy-mm-dd hh.mm.ss.ssssss,则可以使用句点代替冒号。在时间中使用句点时,必须与日期或日期时间分隔符 T 结合使用 (Thh.mm.ss.ssssss)。

在其它环境中,可以使用更灵活的日期格式。SQL Anywhere 可以将多种字符串解释为日期。具体的解释取决于数据库选项 date_order 的设置。date_order 数据库选项的值可以是 MDYYMDDMY,请参见SET OPTION 语句

例如,以下语句将 date_order 选项设置为 DMY

SET OPTION date_order = 'DMY' ;

缺省的 date_order 设置为 YMD。每当建立连接时,ODBC 驱动程序就会将 date_order 选项设置为 YMD。仍然可以使用 SET TEMPORARY OPTION 语句更改该值。

数据库选项 date_order 决定数据库将字符串 10/11/12 解释为 2010 年 11 月 12 日、2012 年 10 月 11 日还是 2012 年 11 月 10 日。日期字符串的年、月、日应该用某个字符(/、- 或空格)分隔,并应按 date_order 选项指定的顺序显示。

年份可以 2 位或 4 位形式提供。nearest_century 选项的值影响对 2 位年份的解释:对于小于 nearest_century 的值,将为其加上 2000;对于所有其它值,将为其加上 1900。此选项的缺省值为 50。因此,缺省情况下会将 50 解释为 1950,而将 49 解释为 2049。

月份可以是月份的名称或编号。小时和分钟以冒号分隔,但可以出现在字符串中的任何位置。

 注意

对两位数年份的处理