繁体   English   中英

将十进制转换为日期以便使用DATENAME函数

[英]Convert decimal to date in order to use DATENAME function

使用以YYYYMMDD格式(例如20160801 )将日期存储为小数列的ERP数据库(SQL Server)。 我需要将这些值转换为日期,以便可以使用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

有一种“未分割的”日期时间格式,可以本地转换。 为此,您需要一个带有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)

您可以将其用于文本或星期几:

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;
DECLARE @decimal DECIMAL(10,0)=20160801;
SELECT DATENAME(dw,CAST(convert(VARCHAR(8),@decimal) AS DATE))

暂无
暂无

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

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