在 SQL 中创建 Excel 日期时间序列/小数部分值

Posted

技术标签:

【中文标题】在 SQL 中创建 Excel 日期时间序列/小数部分值【英文标题】:Create Excel DateTime Serial/Decimal Fraction values in SQL 【发布时间】:2019-12-10 16:20:02 【问题描述】:

我正在尝试在 SQL 中重新创建员工 Excel 工作以节省时间并推动报告。

在他们的电子表格中,他们采用 2 个时间值,从最大值减去最小值得出差值,然后将该时间值转换为序列化时间值:

然后他们对该序列整数求和以定义性能计算。

SQL 中是否有转换或类似过程可以返回相同/相似的序列时间值,以便我可以执行等效计算(或有任何人使用实现此功能的函数)?

我已在代码中尝试了以下行(基于 Excel 日期时间说明 here),该值与 Excel 的结果不同...

datediff(MINUTE,cf_pick_pack.date_start, cf_pick_pack.date_end) * (convert(float,1.00000000/1440)) as 'duration_serial'

SQL 返回 0.00902777^,比 Excel 返回的 0.00923611 短。

【问题讨论】:

如果您的日期/时间为 T-SQL DATETIME/TIME 类型,则可以使用常规的 DATEDIFF 函数。如果您必须明确处理 Excel 值,请参阅this question。 我已经为我尝试过的东西添加了更多风味。有问题的链接线程处理将数据转换为 SQL 日期时间。我需要朝相反的方向前进。 啊,等等。我明白了,因为我是按分钟计算的,所以 SQL 正在对其进行四舍五入。 【参考方案1】:

好吧,我的错。由于 datediff 设置为分钟,SQL 正在计算最接近分钟的差值。

以下作品...

datediff(SECOND,cf_pick_pack.date_start, cf_pick_pack.date_end) * (convert(float,1.00000000/86400)) as 'duration_serial'

【讨论】:

以上是关于在 SQL 中创建 Excel 日期时间序列/小数部分值的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA从两个日期在表格中创建和添加多行

sql server中创建表时各个数据类型时啥意思??

在 SQL Server 中创建自定义日期范围列表以便于使用

在 SQL Server 2012 中创建以日期为范围分区的表

SQL Data Warehouse Cube,如何让用户在 Excel 中创建自己的计算?

尝试在 Redshift 中创建日期表