如何将日期时间(SQL Server)转换为Excel日期时间?

Nic*_*sse 1 sql sql-server excel datetime datetime-conversion

问题:我想将datetimeSQL Server 转换为 Excel 日期时间格式。

示例 1:从2018-08-23 15:32:32.000到43335,65

示例 2:从1985-03-26 10:35:42.000到31132,44

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

SELECT DATEDIFF(day, @MyDatetime, GETDATE())
Run Code Online (Sandbox Code Playgroud)

如果你想转换日期(不带小时),那么它可以工作,但是如何转换时间呢?

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

SELECT DATEDIFF(SECOND, '1899/12/30 00:00:00.000', GETDATE())
Run Code Online (Sandbox Code Playgroud)

但这会导致溢出错误。

datediff 函数导致溢出。分隔两个日期/时间实例的日期部分数量太大。尝试使用 datediff 和不太精确的日期部分。

GSa*_*iuk 6

你可以使用CAST:

select CAST(GETDATE() as float)+2
Run Code Online (Sandbox Code Playgroud)

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

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

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

希望这一切都有道理。