简体   繁体   English

将十进制转换为日期格式 SQL

[英]Convert decimal to date format SQL

I am trying to convert a column FC_FROM_DATE containing decimal values (ex. 20,200,721) into a date format 2020/07/21.我正在尝试将包含十进制值(例如 20,200,721)的列 FC_FROM_DATE 转换为日期格式 2020/07/21。

I have tried this code我试过这段代码

SELECT TO_DATE(CHAR(CAST(FC_FROM_DATE AS DECIMAL(8,0))), 'YYYY/MM/DD') 
FROM MARKETS.FORECAST

I get an error我收到一个错误

Argument for chr should be between 0 and 127 chr 的参数应该在 0 到 127 之间

Would much appreciate your help!非常感谢您的帮助!

If you are using Oracle then you can use the following query:如果您使用的是 Oracle 那么您可以使用以下查询:

SELECT TO_DATE(CAST(FC_FROM_DATE AS VARCHAR(8), 'YYYY/MM/DD') FROM Table

Seeing as the persisted format is YYYYMMDD you could convert the value to a varchar(8) and then use CONVERT to get a Date instance.看到持久格式是YYYYMMDD ,您可以将值转换为varchar(8) ,然后使用CONVERT获取Date实例。

SELECT CONVERT(DATE, CAST(FC_FROM_DATE AS VARCHAR(8))) FROM MARKETS.FORECAST

Ideally Dates are stored as Date and a Date with a time component is stored as DATETIME2 (or equivalent if not Sql Server).理想情况下,日期存储为日期,带有时间组件的日期存储为 DATETIME2(如果不是 Sql 服务器,则等效)。

Test of the code above测试上面的代码

DECLARE @FC_FROM_DATE decimal(8,0) =  20200721
SELECT CONVERT(DATE, CAST(@FC_FROM_DATE AS VARCHAR(8)))

2020-07-21 2020-07-21

Disclaimer: This works in MS Sql Server.免责声明:这适用于 MS Sql 服务器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM