SQL如何将数据库VoyageDate列的日期转换为YYYY-MM-DD格式
你原有写法存在两处核心错误:
GETDATE()是获取数据库当前系统时间的函数,不会读取你业务表中存储的VoyageDate字段值CAST语法使用错误,CAST(GETDATE() AS "VoyageDate")的逻辑是将当前时间转换为名为VoyageDate的自定义类型,和你的需求完全不符。
根据VoyageDate的字段类型不同,对应解法如下:
字段为日期/时间类型(最常见场景)
此时你看到的Nov 25, 2021 12:00:00.0 AM是数据库的默认展示格式,字段本身存储的是标准日期结构,直接调用对应数据库的日期格式化函数即可:
- MySQL:
SELECT DATE_FORMAT(VoyageDate, '%Y-%m-%d') AS voyageDate FROM 你的实际表名;
- SQL Server:
SELECT CONVERT(VARCHAR(10), VoyageDate, 23) AS voyageDate FROM 你的实际表名;
- Oracle/PostgreSQL:
SELECT TO_CHAR(VoyageDate, 'YYYY-MM-DD') AS voyageDate FROM 你的实际表名;
字段为字符串类型
如果VoyageDate本身是字符串字段,存储的就是Nov 25, 2021 12:00:00.0 AM格式的文本,需要先把字符串转成日期类型再格式化,以SQL Server为例:
SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, VoyageDate, 109), 23) AS voyageDate FROM 你的实际表名;
其他数据库可参照对应字符串转日期的函数逻辑调整即可。
内容的提问来源于stack exchange,提问作者Chamikara
相关产品推荐
相关产品推荐

