DATE 类型用于存储不包含时间部分的日期值(年、月、日)。范围与定义
取值范围:
0001-01-01 至 9999-12-31。标准格式:遵循 ISO 8601 标准的
YYYY-MM-DD。语法与字面量 (Literals)
声明一个
DATE 字面量时,必须使用关键字 DATE 后紧跟单引号括起来的字符串:DATE '2013-01-01'显式转换
通过显式转换,可以精准控制
DATE 与其他类型的交互。转换方向 | 规则说明 | 示例 |
TIMESTAMP → DATE | 提取日期部分,丢弃所有时间信息(时、分、秒、微秒)。 | CAST(TIMESTAMP '2023-10-01 12:00:00' AS DATE) → 2023-10-01 |
STRING → DATE | 字符串必须符合 yyyy-MM-dd 或带有时间的完整格式。时间部分将被静默忽略。格式错误将报错。 | CAST('2023-10-01 10:30:00' AS DATE) → 2023-10-01 |
DATE → TIMESTAMP | 补全时间部分,默认设为当天凌晨 00:00:00。 | CAST(DATE '2023-10-01' AS TIMESTAMP) → '2023-10-01 00:00:00' |
DATE → STRING | 输出格式固定的日期字符串。 | CAST(DATE '2023-10-01' AS STRING) → '2023-10-01' |
隐式转换
在特定上下文中,系统会自动执行以下转换:
STRING → DATE:当字符串符合 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss.SSSSSSSSS 模式且目标字段为 DATE 类型时。DATE → TIMESTAMP:当 DATE 值参与需要 TIMESTAMP 类型的运算(如与时间戳对比)时,会自动补全时间戳。