如何将日期时间(SQL 服务器)转换为 Excel 日期时间?
How to convert datetime (SQL Server) into Excel datetime?
问题: 我想将 SQL 服务器的 datetime
转换成 Excel 日期时间格式。
示例 1:从 2018-08-23 15:32:32.000
到 43335,65
示例 2:从 1985-03-26 10:35:42.000
到 31132,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 从不同的开始日期计算天数。
希望这一切都有意义。
问题: 我想将 SQL 服务器的 datetime
转换成 Excel 日期时间格式。
示例 1:从 2018-08-23 15:32:32.000
到 43335,65
示例 2:从 1985-03-26 10:35:42.000
到 31132,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 从不同的开始日期计算天数。
希望这一切都有意义。