首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么DateTime到Unix时间使用double而不是整数?

这个问题涉及到时间戳的表示方式,以及整数和浮点数之间的区别。

首先,Unix时间是一种表示时间的方式,它是从1970年1月1日00:00:00 UTC开始的秒数。这个时间戳是一个整数,因为它只表示时间的长度,而不是时间的精度。

而DateTime是一个表示时间的结构,它包含年、月、日、时、分、秒等信息。这个结构可以表示时间的精度,因此它需要使用浮点数来表示时间。

使用浮点数表示时间的原因是,它可以表示时间的精度。浮点数的小数部分可以表示时间的秒数的小数部分,因此可以表示时间的精度。而整数只能表示时间的秒数的整数部分,无法表示时间的精度。

因此,在将DateTime转换为Unix时间时,需要使用浮点数来表示时间戳。这样可以保留时间的精度,并且可以正确地表示时间的长度和精度。

总之,使用浮点数表示时间戳是为了保留时间的精度。这种表示方式可以正确地表示时间的长度和精度,而整数只能表示时间的长度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL建表数据类型的选择

这里有两个例子:一个是应该使用 MySQL 内建的类型(date, time, datatime)不是字符串来存储日期和时间,另一个是应该用无符号整型存储 IP 地址。 尽量避免NULL。...如果使用数字作为枚举常量,这种双重性很容易导致混乱,例如 enum('1', '2', '3') 。建议尽量避免这么做。 枚举字段是按照内部存储的整数不是定义的字符串进行排序的。...日期和时间类型: MySQL 能存储的最小时间粒度为秒。 datetime 保存范围从 1001 年 9999 年,精度为秒。与时区无关。使用 8 字节的存储空间。...timestamp 类型保存了从 1970 年 1 月 1 日 午夜(格林尼治标准时间)以来的秒数,它和 unix 时间戳相同。使用 4 字节的存储空间,范围从 1970 年 2038 年。...除了特殊行为之外,通常也应该尽量使用 timestamp ,因为它比 datetime 空间效率更高。有时候人们会将 unix 时间戳存储为整数值,但这不会带来任何收益。

5.2K10

MQL5从入门精通「第二章」变量与数据类型(一)

MQL4只有int型,MQL5则区分出4种类型。因为有正有负,是有符号数,最高一位0为正,1为负。 char - 一个字节,所以是 -128127.【2^7】 short - 两个字节。...精确7位小数点。 double - 双精度。八个字节。精确小数点后15位。 工程实践中,我们推荐double型。MQL5函数内经常使用。float型常用语存储和处理大型的实数填充的数组。...# 日期时间类型 datetime type 该类型用于存储日期时间。在系统内,是使用unix时间戳的方式存储。...什么是unix timestamp,就是从1970-1-1 00:00:00开始到现在的秒数。比如当前,这个秒数一共经过了 1,575,116,508。 初始化该类型的变量,可以使用日期时间常量。...如: datetime myDate = D''; // 默认为当先日期时分秒 datetime myDate = D'02:08'; // 系统判定为当前日期 + 02点08分。注意不是2分8秒。

1.6K50

MySQL数据类型与优化

比如应该使用MySQL内建的类型(date/time/datetime)不是字符串来存储日期和时间 4、应该使用整形存储IP地址,不是字符串 5、尽量避免使用NULL,通常情况下最好指定列为NOT...NULL,除非真的要存储NULL值 6、DATETIME和TIMESTAMP列都可以存储相同类型的数据:时间和日期,且精确秒。...MySQL在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存"数字-字符串"映射关系的"查找表"。 2、枚举字段是按照内部存储的整数不是定义的字符串进行排序的。...DATETIME 1、这个类型能保存大范围的值,从1001年9999年,精确度为秒。 2、它把日期和时间装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。...3、MySQL提供了FROM_UNIXTIME()函数把UNIX时间戳转换为日期,提供了UNIX_TIMESTAMP()函数把日期转换为Unix时间戳。

1.5K10

【小家SQL】MySql数据类型---日期时间类型的使用(含datetime和timestamp的区别) 0000-00-00 00:00:00问题解释

int类型是4个字节,TIMESTAMP也是4个字节,但是在需要使用日期时,时间戳还需要进一步转换,TIMESTAMP类型数据就不需要了。...此处注意发现:Time类型HH的取值竟然是800+,不是我们本以为的24以内的数字,具体原因,下面会有解释 各类型详细讲解 1、Year 见名之意,year用于存储年,存储时只需要一个字节,插入数据时可以使用各种格式指定...`test` (`id`, `a`) VALUES ('14', current_date()); 4、Datetime datetime类型使用8个字节来表示日期和时间。...为什么会出现 2018 的字符串?...无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-3276832767,unsigned能存储的数据范围则是065535。

6.8K20

ClickHouse 数据类型全解析及实际应用

直接使用 Float32 和 Float64 代表单精度浮点数以及双精度浮点数 ClickHouse 的浮点类型有两种值: Float32 - float Float64 - double 建议尽可能以整数形式存储数据...而且在 ClickHouse 使用过 程中,你也会发现,做比较得到的结果都是 1 或者 0,不是通常意义上的 True 或者 False select 1 == 1; select 1 == 2;...允许存储从 Unix 纪元开始 编译阶段定义的上限阈值常量(目前上限是2106年,但最终完全支持的年份为2105)。最小值输出 为1970-01-01。...DateTime类型 时间戳类型。用四个字节(无符号的整数类型,Uint32)存储 Unix 时间戳)。允许存储与 Date 类型相同的范围内的值。最小值为 1970-01-01 00:00:00。...时间戳类型值精确秒(没有闰秒)。 DateTime 类型包含时、分、秒信息,精确秒,支持使用字符串形式写入。

3.9K50

MySQL面试题(一)

E-38,3.402 823 466 E+38) 单精度 浮点数值 DOUBLEdouble) 8 Bytes ... ......尽量避免使用 text/blob 类型,查询时会使用临时表,导致严重的性能开销。 Char 和 Varchar 支持设置默认值, Text 不能指定默认值。...1.3 datetime 和 timestamp 的区别 datetime能保存大范围的值,从 1001~9999 年,精度为秒。把日期和时间封装到了一个整数中,与时区无关,使用 8 字节存储空间。...timestamp 和 UNIX 时间戳相同,只使用 4 字节的存储空间,范围比 DATETIME 小得多,只能表示 1970 ~2038 年,并且依赖于时区。 1.4 数据类型有哪些优化策略?...应该使用 MySQL 的内建类型 date、time 和 datetime 不是字符串来存储日期和时间, 应该使用整形存储 IP 地址。

33420

MySQL数据类型选择「建议收藏」

:59:59’ HH:MM:SS 时间值或持续时间 YEAR 1 字节 1901 2155 YYYY 年份值 DATETIME 8 字节 1000-01-01 00:00:00 9999-12-...用MySQL的内建类型DATE、TIME、DATETIME来存储时间不是使用字符串。...TIMESTAMP是UTC时间戳,与时区相关。 DATETIME的存储格式是一个YYYYMMDD HH:MM:SS的整数,与时区无关,你存了什么,读出来就是什么。...除非有特殊需求,一般的公司建议使用TIMESTAMP,它比DATETIME更节约空间,但是像阿里这样的公司一般会用DATETIME,因为不用考虑TIMESTAMP将来的时间上限问题。...有时人们把Unix时间戳保存为整数值,但是这通常没有任何好处,这种格式处理起来不太方便,我们并不推荐它。

80730

Mysql数据库学习(二):数据类型(数值类型 日期和时间类型 字符串类型)

数据类型 数值类型 日期和时间类型 字符串类型 一、数值类型 整数 tinyint[M] [unsigned] [zerofill]    // [ ] 表示可选,这里的M表示显示宽度,并不是取值范围...长度可以指定为065,535之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。...也就是说,它们包含字节字符串不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值。 字符串存储需求 VARCHAR、BLOB和TEXT类是变长类型。...每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),不是该类型的最大可能的大小。例如,VARCHAR(10)列可以容纳最大长度为10的字符串。...三、日期和时间 日期和时间看起来像字符串,但是以整数来保存的。

2.4K00

3、MySQL的数据类型介绍

其可以增大这个字段正整数的支持范围。 zerofill 规定0填充(默认是空格)填补输出的值,使用这个值可以防止MySQL存储负值。...10:01:01 | +----------+ 1 row in set (0.00 sec) 5.3 year类型 00-69:转为2000-2069 70-79转为:1970-1999 1970Unix...类型和time stamp类型 datetime类型timestamp类型 datetime类型能保存大范围的值,从1001年9999年,精度为秒,它把日期和时间封装到格式为YYYY-MM-DD HH...:MM:SS的整数中,与时区无关,使用8个字节的存储空间 timestamp类型保存了从1970年1月1日午夜(格林尼治时间) 以来的秒数 它和linux时间戳相同,timestamp只使用了4个字节的存储空间...,因此它的范围比datetime小的多,只能表示从1970-2038,通常我们还是用它的,提高空间利用率 举例: mysql> create table mydate3(dt datetime); Query

78110

MySQL数据类型

整数类型有可选的UNSIGNED类型,表示不允许负值,这大致可以使正数的上限提高一倍。例如 TINYINT UNSIGNED可以存储的范围是0~255,TINYINT的存储范围是-128~127。...日期和时间类型 MySQL可以使用很多类型来保存时间和日期,如YEAR和DATE,MySQL能存储最小时间粒度为秒。 这里主要介绍2种相似的日期类型DATETIME和TIMESTAMP。...数据类型 存储空间 时间范围 DATETIME 8个字节 1001年~9999年 TIMESTAMP 4个字节 1970年~2038年 通常情况下应该尽量使用TIMESTAMP,相比于DATETIME...有的人会将unix时间戳存储为整数值,但这不会带来任何收益(除了特殊情况,如下),数据处理起来也不方便,因此不推荐这样做。...对于需要存储比秒更小粒度的日期和时间值情况,建议可以使用BIGINT类型存储微秒级别的时间戳,或者使用DOUBLE存储秒之后的小数部分。

1.1K10

MySQL开发规范之数据类型设计规范

TINYINT来代替布尔类型 4)不建议使用ENUM类型,可使用TINYINT来代; 5)用DECIMAL代替FLOAT和DOUBLE存储精确浮点数; 6)使用无符号整型(UNSIGNED)存储非负整数...日期类型 注: 1)普遍情况,建议使用datetime,因为datetime和timestamp的存储占用空间不同,datetime占用8个字节,timestamp占用4个字节,所以说timestamp...范围为:1970-01-01 08:00:012038-01-19 11:14:07 datetime支持的时间范围则要大很多。...1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 2)如果对于时间类型字段需要设置动态的默认值,在MySQL 5.6.5以前不支持,需要使用timestamp,或者不设置默认值...4)日期和时间字段精确度“秒”,建议使用unix时间戳格式存储(数据类型为int),在展示的时候需要注意一下时区问题;每条记录都需要有插入时间字段,如果有需要,可以增加记录修改时间字段;重要的数据记录和数据操作

16920

MySQL-2

分别使用8,16,32,64位存储空间,它们恶意存储的范围址从-2的N-1次方2的N-1次方-1,N为存储空间的位数。 整数类型有可选的UNSIGNED属性,表示不允许负值。...BINARY和VARBINARY存储的事二进制字符串,二进制字符串存储的是字节码不是字符。MySQL填充BINARY采用的是\0不是空格,在检索时也不会去掉填充值。...MySQL对BLOB和TEXT列进行排序与其他类型是不同的:它只对每个列的最前max_sort_length字节不是整个字符串进行排序。...MySQL能存储的最小时间粒度为秒。但MySQL可以使用微秒级的粒度进行临时运算。MySQL提供两种日前类型;DATETIME和TIMESTAMP。 DATETIME精度为秒。...MySQL提供了FROM_UNIXTIME()函数把Unix时间转换为日期,并提供UNIX_TIMESTAMP()函数把日期转换为Unix时间戳。TIMESTAMP显示的值也依赖于市区。

79710

MySQL数据类型详解

其中,FLOAT 表示单精度浮点数;DOUBLE 表示双精度浮点数;FLOAT和DOUBLE是有取值范围的,并支持使用标准的浮点进行近似计算。...(2)MySQL允许使用 非标准语法 (其他数据库未必支持,因此如果涉及数据迁移,则最好不要这么用): FLOAT(M,D) 或 DOUBLE(M,D) 。这里,M称为精度 ,D称为标度 。...尽量使用timestamp,空间效率高于datetime, 用整数保存时间戳通常不方便处理。 注意: 为什么时间类型 TIME 的取值范围不是 -23:59:59~23:59:59 呢?...DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。 总结: 用得最多的日期时间类型,就是 DATETIME 。...此外,一般存注册时间、商品发布时间等,不建议使用DATETIME存储,而是使用时间戳 ,因为DATETIME虽然直观,但不便于计算。

21430

MySQL(四)之MySQL数据类型

考虑临界值问题又有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就自行百度。给出一张范围表,给大家做参考。 不同整数类型的取值范围 ?       ...这只是举一个例子,来说明M,D是什么,实际是先有M,D的,然后在来控制数值,不是更具数值来确定M,D。           ...这个没有冒号时需要注意一点,数值的最右边两位表示秒,以此类推,比如 5523 表示的是00:55:23不是55:23:00。               ...总结:BINARY和VARBINARY的主要作用就是用来区分大小写的,其他没什么作用,但是使用时要注意限制其大小的是字节数,不是二进制位,它存储的格式是用二进制来存储的。这两个不要搞混淆了。  ...七、如何选择数据类型  1、整数和浮点数             如果不需要小数部分,则使用整数来保存数据,并且根据整数的大小,来选择合适的整数类型,如果需要小数部分,则使用浮点数类型,浮点数类型中

2.5K101

数据库存储时间你用对了吗?

2.2、日期范围和存储空间: 这个类型能保存大范围的值,从1000年9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。...MySQL提供了FROM_UNIXTIME() 函数把 Unix 时间戳转换为日期,并提供了UNIX_TIMESTAMP() 函数把日期转换为 Unix 时间戳。...Timestamp只使用4个字的存储空间,因此它的范围比Datetime小的多,只能表示从1970年2038年。...因此,当我们使用 DateTime 进行存储时间,要警惕客户端时区的变化,时区的变化可能会导致数据出现问题。...PS:在Java 8 中,对这个问题进行了改进,如果使用Java 8 时间 API 的话,则会报错。 ? 6.2 Date 是可变的。 因为 Date 是可变的,因此该类不是线程安全的。

1.7K10
领券