如何将日期时间(SQL 服务器)转换为 Excel 日期时间?

How to convert datetime (SQL Server) into Excel datetime?

问题: 我想将 SQL 服务器的 datetime 转换成 Excel 日期时间格式。

示例 1:从 2018-08-23 15:32:32.00043335,65

示例 2:从 1985-03-26 10:35:42.00031132,44

我尝试过的:受this回答的启发,我尝试了这个查询

SELECT DATEDIFF(day, @MyDatetime, GETDATE())

如果你想转换日期(不带小时),那么如何转换时间呢?

在Excel中,时间保存在数字的小数部分,所以我尝试使用

SELECT DATEDIFF(SECOND, '1899/12/30 00:00:00.000', GETDATE())

但这会导致溢出错误。

The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.

我只是从 Db 中获取日期并让 Excel 转换它。这样,如果 Excel 改变了它的内部表示,你的 SQL 代码就不必改变

将您的 DATETIME 转换为 FLOAT 并添加 2

例子

Declare @D datetime = '2018-08-23 15:32:32.000'

Select cast(@D as float)+2

Returns

43335.6475925926

你可以使用 CAST:

select CAST(GETDATE() as float)+2

Excel 中日期的工作原理: https://www.excelcampus.com/functions/how-dates-work-in-excel/

基本上任何日期都可以存储为自 1/1/1900 以来的天数。时间是分数值,等于 (number_of_seconds_since_midnight)*(1/(24*60*60))

需要添加 2 天,因为 Excel 和 SQL 从不同的开始日期计算天数。

希望这一切都有意义。