缺省情况下,存储为 DATE 类型的值没有任何小时或分钟值,因此比较日期非常简单。
DATE 数据类型也可以包含时间,这会使日期的比较变得复杂。如果在将日期输入数据库时没有指定时间,缺省时间将是 0:00 或 12:00am(午夜)。带有此选项设置的任何日期比较都会比较时间和日期。数据库日期值 1999-05-23 10:00 与常量 1999-05-23 并不相等。可以使用 DATEFORMAT 函数或某个其它日期函数来比较日期和时间字段的各个部分。例如,
DATEFORMAT(invoice_date,'yyyy/mm/dd') = '1999/05/23'; |
如果数据库列只需要日期,客户端应用程序应确保在将数据输入到数据库中时不指定时间。这样,只包含日期字符串的比较才会按预期方式进行。
如果要将某个日期作为字符串 与某个字符串进行比较,则必须在比较之前使用 DATEFORMAT 函数或 CAST 函数将日期转换为字符串。
SQL Anywhere 在比较时间和日期数据类型时使用以下规则(按列出顺序检查规则,并使用适用的第一条规则):
如果其中一个参数的数据类型为 TIME,则将两个参数都转换为 TIME,然后再进行比较。
如果其中一个数据类型为 DATE 或 TIMESTAMP,则将两个参数都转换为 TIMESTAMP,然后再进行比较。
例如,如果两个参数的数据类型为 REAL 和 DATE,则将它们都转换为 TIMESTAMP。
如果一个参数的数据类型为 NUMERIC,而另一个参数的数据类型为 FLOAT,则将两个参数的数据类型都转换为 DOUBLE,然后再进行比较。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |