日期时间赋值
分配给日期、时间或时间戳列、变量或参数的字符串值必须是日期、时间或时间戳的有效字符串表示形式。
日期列、日期变量或日期参数的值必须为日期、日期的有效字符串表示形式或不含时区的有效时间戳字符串表示形式。 当不带时区的时间戳字符串表示形式被分配给日期目标时, Db2 数据库管理器会将时间戳的日期部分分配给日期目标,而不使用时间戳的时间部分。
日期只能分配给以下项目:
- 日期栏
- 字符串列
- 字符串变量
- 一个日期变量
分配给时间列、时间变量或时间参数的值必须为时间、有效的时间字符串表示形式或有效的不带时区的时间戳字符串表示形式。 当不带时区的时间戳字符串表示形式被分配给时间目标时, Db2 数据库管理器会将时间戳的时间部分分配给时间目标,截断任何小数秒,并且不使用时间戳的日期部分。
以下项目只能分配时间:
- 时间轴
- 字符串列
- 字符串变量
- 时间变量
分配给时间戳列、时间戳变量或时间戳参数的值必须为时间戳、时间戳常量、时间戳的有效字符串表示形式或日期的有效字符串表示形式。 当日期的字符串表示形式被分配给时间戳目标时, Db2 数据库管理器会在时间戳目标的时间部分插入零。
时间戳只能分配给以下项目:
- 时间戳列
- 字符串或图形字符串列
- 时间戳变量
- 字符串或图形字符串变量
日期时间值的合法字符串表示形式不得为BLOB、CLOB或DBCLOB。 不能为包含字段过程的列指定日期时间值。 如果目标的时间戳精度低于指定值的时间戳精度,则多余的小数秒将被截断。
当日期时间值被分配给字符串变量或列时,它会被转换为字符串表示形式。 日期、时间或时间戳记的任何部分都不会省略前导零。 目标字符串的长度取决于字符串表示的格式。 如果固定长度字符串目标的长度大于所需长度,则会在右侧填充空格。 如果目标的长度小于要求的长度,结果取决于所涉及的日期时间值的类型和目标的类型。
当日期时间值被分配给时间戳变量或列时,它会被转换为目标时间戳数据类型。 如果源数据类型与目标数据类型不同,则源值将隐式转换为目标数据类型。 Db2 在涉及不同类型的赋值操作时,可能会隐式转换数据类型。
- 如果目标不是变量,并且具有字符串或图形字符串数据类型(BLOB、CLOB或DBCLOB除外),则不允许截断。 列的长度必须至少满足以下值:
- 10个约会
- 《时代》杂志8
- 19 表示不带时区的时间戳, 精度为
0, 20+p精度为 p - 足以包含时区(不允许截断),用于带时区的TIMESTAMP
- 当目标为字符串或图形字符串变量时,适用以下规则:
- 日期 :变量长度不得小于10。
- 暂时 :如果使用美国格式,变量长度不得少于8。 这种格式不包括秒。
如果使用ISO、EUR或JIS格式,变量长度不得少于5。 如果长度为5、6或7,则结果中会省略秒数部分,并将 SQLWARN1 设置为“W”。 在这种情况下,如果提供了指示变量,则将时间的秒部分分配给指示变量,如果长度为6或7,则用空格填充该值,使其成为时间的一个有效字符串表示形式。
- 时间戳 :变量长度不得少于19。 如果源是带时区的TIMESTAMP,则变量的长度必须足以包含时区,不允许截断。
- 如果长度在19-31之间,时间戳会被截断为字符串,导致时间戳的秒数部分被省略一个或多个数字。
- 如果长度为20,则不包含尾随的小数点,因此该值是时间戳的有效字符串表示形式,精确度为0。