yyyy/mm/dd 或 yyyy-mm-dd 格式的日期总是会被明确地识别为日期,而与 date_order 设置无关。可以使用其它字符代替 '/' 或 '-' 作为分隔符;例如 '?'、空格字符或 ','。在任何不同的用户可能会采用不同 date_order 设置的环境中,都应使用此格式。例如,在存储过程中,使用明确的日期格式可以防止按照用户的 date_order 设置错误地解释日期。
此外,hh:mm:ss:ssss 格式的字符串将明确地解释为时间。
对于日期和时间的组合,任何明确的日期和任何明确的时间都会产生明确的日期时间值。同样,yyyy-mm-dd hh.mm.ss.sss 格式也是明确的日期时间值。句点只能在与日期组合的时间中使用。
在其它环境中,可以使用更灵活的日期格式。SQL Anywhere 可以将多种字符串解释为日期。具体的解释取决于数据库选项 date_order 的设置。date_order 数据库选项的值可以是 MDY、YMD 或 DMY(请参见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。
月份可以是月份的名称或编号。小时和分钟以冒号分隔,但可以出现在字符串中的任何位置。
建议始终使用 4 位格式指定年份。
只要 date_order 的设置正确,以下字符串便都是有效日期:
99-05-23 21:35 99/5/23 1999/05/23 May 23 1999 23-May-1999 Tuesday May 23, 1999 10:00pm |
如果字符串只包含部分日期规范,将使用缺省值填写日期。使用以下缺省值:
year 今年
month 没有缺省值
day 1(对月份字段很有用;例如,1999 年 5 月解释为日期 1999-05-01 00:00)
小时、分钟、秒、小数 0
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |