You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Athena SQL中从年、月、日列生成yyyy-mm-dd格式日期的方法

将year/month/day列转换为yyyy-mm-dd格式日期的实现方法

不同数据库有不同的简洁实现方式,以下是几种常用数据库的解决方案:

MySQL/MariaDB

有两种可靠的方式:

  1. 使用MAKEDATE结合时间间隔计算,自动处理补零和日期合法性校验:
SELECT MAKEDATE(year, 1) + INTERVAL (month - 1) MONTH + INTERVAL (day - 1) DAY AS date_column
FROM your_table;
  1. 拼接字符串后转换为日期(需确保月份、日期是两位数,用LPAD补零):
SELECT DATE(CONCAT(year, '-', LPAD(month, 2, '0'), '-', LPAD(day, 2, '0'))) AS date_column
FROM your_table;

PostgreSQL

直接用专门的MAKE_DATE函数,简洁且安全:

SELECT MAKE_DATE(year, month, day) AS date_column
FROM your_table;

也可以用字符串拼接转日期的方式:

SELECT TO_DATE(CONCAT(year, '-', LPAD(month::TEXT, 2, '0'), '-', LPAD(day::TEXT, 2, '0')), 'YYYY-MM-DD') AS date_column
FROM your_table;

SQL Server

SQL Server 2012及以上版本支持DATEFROMPARTS函数,一步到位:

SELECT DATEFROMPARTS(year, month, day) AS date_column
FROM your_table;

如果是旧版本,需要拼接字符串并补零后转日期:

SELECT CAST(CONCAT(year, '-', RIGHT('0' + CAST(month AS VARCHAR(2)), 2), '-', RIGHT('0' + CAST(day AS VARCHAR(2)), 2)) AS DATE) AS date_column
FROM your_table;

Oracle

使用TO_DATE函数拼接字符串转换:

SELECT TO_DATE(CONCAT(CONCAT(year, '-', LPAD(month, 2, '0')), '-', LPAD(day, 2, '0')), 'YYYY-MM-DD') AS date_column
FROM your_table;

注意:所有方法都会自动校验日期的合法性(比如2月30日这类无效日期会返回NULL或报错,具体取决于数据库设置)。

内容的提问来源于stack exchange,提问作者Janzaib M Baloch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:45:00