Macola YYYYMMDD int-到SQL和Exceldate。 这应该是一个简单的修复,这太令人沮丧了。

所以,这是我的问题。 我的公司使用Macola数据库,我们通常在Crystal中创build报告。 这不是一个问题,因为Macola是为Crystal设立的。如果你需要使用这个公式来使这个date工作,那真的很容易。

MacolaNumberToDate({Field_x})如果你错过了DLL,请尝试重新安装Macola,而不仅仅是DLL。

我的问题来自于我们的所有用户都希望用Excel编写自己的报告,而Macola的date和Excel相互矛盾。

Macola将date保存为int,因此显然需要在Excel将其识别为date之前进行更改。 问题是,我一直没有find一个能够做到这一点的公式,而不是反弹一个错误。 Macola中的格式是YYYYMMDD,并保存为int。 经过大量的研究,我终于明白,将这个改为date有两个问题。 其中,整数不能只是变更为date,在允许date之前必须经历多个变更。

在这个页面上,有一个非常有用的图表,可以帮助任何正在努力进行date转换的人。 http://msdn.microsoft.com/en-us/library/ms187928.aspx

第二个问题是,当你从YYYYMMDD更改为date时,sql在分析数字时遇到了麻烦,并且遇到错误。 这是我想出来的代码,但可能会使用一些清理。 我为所有像我一样无法做任何事的人发帖。

Cast((SUBSTRING(CAST(trx_dt AS char(8)),5,2)+'/'+ SUBSTRING(CAST(trx_dt AS char(8)),7,2)+'/'+ SUBSTRING(CAST(trx_dt AS char(8)),1,4))作为date)

我现在还有一个问题,我很乐意帮忙。 我需要在case语句中使用上面的代码,其中一个WHEN语句需要符合上个月最后一天的标准(基于trx_dt(但是转换器在上面或更好)),它需要=最后一个上个月的一天。 我需要这种dynamic,以及我导入Excel的方式,我不能使用variables。

两种转换方法,具体取决于您想要进行转换的位置:

SQL-服务器:

select cast(cast(trx_dt as char(8)) as date) 

Excel中:

 =DATEVALUE(TEXT(A1,"0000-00-00")) 

如果你想要当前月份的结束,那么有function会给你这个。
SQL-服务器:

 select DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, cast(cast(trx_dt as char(8)) as date)) + 1, 0)) 

Excel中:

 =EOMONTH(DATEVALUE(TEXT(A1,"0000-00-00")),0)