gpt4 book ai didi

sql - 将日期时间转换为 float 时,SQL 的转换函数如何工作?

转载 作者:行者123 更新时间:2023-12-02 08:31:24 26 4
gpt4 key购买 nike

为什么这个查询的输出:

declare @currentDate as datetime
set @currentDate ='01/07/2010'

select convert(float, @currentdate)

...是 40183 吗?

因此,对于那些对我的问题感到困惑的人,我的问题是如何在不执行上述查询的情况下知道其结果?

最佳答案

DateTime 的整数部分通常表示为从预定日期(通常称为纪元)算起的天数,小数部分表示为自午夜以来经过的天数的百分比。

SQL Server 也不异常(exception),因此转换为 Float 很有意义。第 0 天是 1900 年 1 月 1 日 00:00:00(据我所知,没有特定时区,因此您应将其视为“本地时间”)。

所以,你可以试试这个:

declare @ADate DateTime;
set @ADate = '19000101 00:00:00';
select CONVERT(float, @ADate); --should print 0
set @ADate = '19000101 12:00:00';
select CONVERT(float, @ADate); --should print 0.5
set @ADate = '19001231 06:00:00';
select CONVERT(float, @ADate); --should print 364.25

因此,对于您的结果,自 01/01/1900 00:00:00 和 01/07/2010 00:00:00 以来已经过去了 40183 天

澄清:类 Unix 系统使用不同的方法来存储日期时间:自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数,这通常称为纪元时间。

[编辑]经过几年的 SQL Server 经验(正如 @Damien 在他的评论中所说),此响应的日期格式已于 20140416 更改为 YYYYMMDD 格式,这是唯一安全的格式。

关于sql - 将日期时间转换为 float 时,SQL 的转换函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com