我正在尝试将包含十进制值(例如20200721)的列fc\u from\u date转换为日期格式2020/07/21。我试过这个密码
SELECT TO_DATE(CHAR(CAST(FC_FROM_DATE AS DECIMAL(8,0))), 'YYYY/MM/DD') FROM MARKETS.FORECAST
我出错了chr的参数应介于0和127之间非常感谢您的帮助!
w3nuxt5m1#
如果您使用的是oracle,则可以使用以下查询:
SELECT TO_DATE(CAST(FC_FROM_DATE AS VARCHAR(8), 'YYYY/MM/DD') FROM Table
zbdgwd5y2#
因为持久化格式是 YYYYMMDD 可以将值转换为 varchar(8) 然后使用 CONVERT 得到一个 Date 示例。
YYYYMMDD
varchar(8)
CONVERT
Date
SELECT CONVERT(DATE, CAST(FC_FROM_DATE AS VARCHAR(8))) FROM MARKETS.FORECAST
理想情况下,日期存储为date,带有时间组件的日期存储为datetime2(如果不是sql server,则等效)。
DECLARE @FC_FROM_DATE decimal(8,0) = 20200721 SELECT CONVERT(DATE, CAST(@FC_FROM_DATE AS VARCHAR(8)))
2020-07-21免责声明:这适用于ms sql server。
2条答案
按热度按时间w3nuxt5m1#
如果您使用的是oracle,则可以使用以下查询:
zbdgwd5y2#
因为持久化格式是
YYYYMMDD
可以将值转换为varchar(8)
然后使用CONVERT
得到一个Date
示例。理想情况下,日期存储为date,带有时间组件的日期存储为datetime2(如果不是sql server,则等效)。
上述代码的测试
2020-07-21
免责声明:这适用于ms sql server。