使用ERP数据库(SQL Server)将日期存储为YYYYMMDD
格式的十进制列 - 例如20160801
。我需要将这些值转换为日期,以便我可以使用DATENAME
函数来识别与每个日期对应的星期几。
或者,如果有另一种方法来推导一周中的某一天,我会全力以赴。查询的其余部分很简单......我只需要返回订单号,订单日期(存储为小数的列),以及与订单日期对应的星期几。
我仍然遗失了一些东西,因为我得到了一个无法绑定的错误:
Select CAST(OEORDD.EXPDATE AS VARCHAR(8))
DECLARE @dec DECIMAL(10,0)=20160801;
SELECT CAST(CAST(@dec AS VARCHAR(8)) AS DATE) , sum(OEORDD.EXTWEIGHT) as ExtWeight
FROM OEORDD
GROUP BY EXPDATE
答案 0 :(得分:3)
有" unseparated"日期时间格式,本地可以使用。为此,您需要一个带有 yyyymmdd 的8个字母的字符串。
首先将十进制数转换为字符串:
CAST(YourDecimalValue AS VARCHAR(8))
然后把它投到日期:
DECLARE @dec DECIMAL(10,0)=20160801;
SELECT CAST(CAST(@dec AS VARCHAR(8)) AS DATE)
你可能需要这样的东西:
SELECT CAST(CAST(OEORDD.EXPDATE AS VARCHAR(8)) AS DATE) AS YourConvertedDate
,SUM(OEORDD.EXTWEIGHT) AS ExtWeight
FROM OEORDD
GROUP BY CAST(CAST(OEORDD.EXPDATE AS VARCHAR(8)) AS DATE)
答案 1 :(得分:2)
您可以将其用于文本或一周工作日数:
DECLARE @d DECIMAL = 20160801;
SELECT DATENAME(dw,CAST(CAST(@d as VARCHAR(8)) as DATE)),
DATENAME(d,CAST(CAST(@d as VARCHAR(8)) as DATE)),
@d;
答案 2 :(得分:0)
DECLARE @decimal DECIMAL(10,0)=20160801;
SELECT DATENAME(dw,CAST(convert(VARCHAR(8),@decimal) AS DATE))