Oracle/MySQL中不使用to_date/to_char函数生成日期字段
需求说明
需要将day、month、year三列数据拼接成DD-MM-YYYY格式的日期字符串,禁止使用to_date或to_char函数。
输入数据
| day | month | year |
|---|---|---|
| 1 | 2 | 1995 |
| 2 | 3 | 1998 |
| 5 | 6 | 2020 |
期望输出
| date |
|---|
| 01-02-1995 |
| 02-03-1998 |
| 05-06-2020 |
解决方案
针对不同数据库,可通过字符串补位+拼接的方式实现需求:
MySQL/MariaDB
使用LPAD函数给日、月补前导零,再用CONCAT组合成目标格式:
SELECT CONCAT( LPAD(day, 2, '0'), '-', LPAD(month, 2, '0'), '-', year ) AS date FROM your_table_name;
SQL Server
用RIGHT函数拼接前导零实现补位,再组合字符串:
SELECT RIGHT('0' + CAST(day AS VARCHAR(2)), 2) + '-' + RIGHT('0' + CAST(month AS VARCHAR(2)), 2) + '-' + CAST(year AS VARCHAR(4)) AS date FROM your_table_name;
Oracle
用LPAD函数补零,通过||操作符拼接字符串:
SELECT LPAD(day, 2, '0') || '-' || LPAD(month, 2, '0') || '-' || year AS date FROM your_table_name;
内容的提问来源于stack exchange,提问作者indianbro
相关产品推荐
相关产品推荐

