将数值的日期和时间字符串强制转型为 DATE 数据类型

数据库服务器提供内建的强制转型来将 DATETIME 值转换为 DATE 值,如在下列 SPL 程序片段中所示:
DEFINE my_date DATE;
          DEFINE my_dt DATETIME YEAR TO SECOND;
          . . .
          LET my_date = CURRENT;
在此,CURRENT 返回的 DATETIME 被隐式地强制转型为 DATE。您还可显式地将 DATETIME 强制转型为 DATE:
LET my_date = CURRENT::DATE;

这两个 LET 语句将来自 DATETIME 值的 yearmonthday 指定到 DATE 类型的本地 SPL 变量 my_date

类似地,如同在 文字的 DATETIME 语法图中定义的那样,您可显示地将有“数值的日期和时间”段的格式的字符串强制转型为 DATETIME 数据类型,如下例所示:
LET my_dt = 
          ('2008-02-22 05:58:44.000')::DATETIME YEAR TO SECOND;
然而,对于直接地将有“数值的日期和时间”格式的字符串转换为 DATE 值,既没有隐式的也没有显式的内建的强制转型。 例如,下列两个语句都失败并报错 -1218:
LET my_date = ('2008-02-22 05:58:44.000');
          LET my_date = ('2008-02-22 05:58:44.000')::DATE;
要将指定有效的数值日期和时间值的字符串转换为 DATE 数据类型,您必须首先将该字符串强制转型为 DATETIME,然后再将结果 DATETIME 值强制转型为 DATE,如此例所示:
LET my_date = 
          ('2008-02-22 05:58:44.000')::DATETIME YEAR TO SECOND::DATE;
仅当字符串指定有效的 DATE 值时,直接的从字符串到 DATE 的强制转型才可成功。