在 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-SQLDATETIME
/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 日期时间序列/小数部分值的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中创建自定义日期范围列表以便于使用
在 SQL Server 2012 中创建以日期为范围分区的表