Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mysql中以unix毫秒存储日期?_Mysql_Sql - Fatal编程技术网

如何在Mysql中以unix毫秒存储日期?

如何在Mysql中以unix毫秒存储日期?,mysql,sql,Mysql,Sql,如何在MYSQL中以UNIX毫秒为单位存储当前日期,例如:138888000000 现在我将其存储在datetime中。不要DateTime值应存储为DateTime,除非您有很好的理由存储它们(比如支持日期和时间值超出DateTime的最小/最大值),否则我建议将其保留在DateTime列中 在Select期间或在表示层中,您始终可以操纵如何从数据库返回它们。为了从DateTime返回unix时间,MySql提供了一个名为的内置方法。要返回毫秒数,只需乘以1000,因为unix时间戳是自197

如何在MYSQL中以UNIX毫秒为单位存储当前日期,例如:138888000000


现在我将其存储在datetime中。

不要
DateTime
值应存储为
DateTime
,除非您有很好的理由存储它们(比如支持日期和时间值超出
DateTime
的最小/最大值),否则我建议将其保留在
DateTime
列中

Select
期间或在表示层中,您始终可以操纵如何从数据库返回它们。为了从
DateTime
返回unix时间,MySql提供了一个名为的内置方法。要返回毫秒数,只需乘以1000,因为unix时间戳是自1970年1月1日以来的秒数(不包括闰秒)。如果要存储unix时间,则必须使用int数据类型

请注意,如果您确实存储unix时间,而不是将实际的
DateTime
值存储在
DateTime
数据类型列中,您将失去轻松使用所有内置数据库函数的能力。例如,如果您想知道有多少行属于一个特定的月份,首先必须将数据从int转换为datetime,然后才能计算出来

您还将失去准确性(因为unix时间即使在1秒分辨率上也是不准确的,因为它忽略了闰秒)

因此,总结一下——当数据库提供适合数据的数据类型时,不要使用其他数据类型存储该数据。如果只想存储日期,请使用数据类型;如果要存储日期时间值,请使用数据类型;如果要存储一天中的特定时间,请使用数据类型

附加说明

在处理日期时间值时,尤其是当您必须处理来自多个位置的客户端时,请始终仅在数据库中存储UTC日期时间,而不要存储
DateTime
值应存储为
DateTime
,除非您有很好的理由存储它们(比如支持日期和时间值超出
DateTime
的最小/最大值),否则我建议将其保留在
DateTime
列中

Select
期间或在表示层中,您始终可以操纵如何从数据库返回它们。为了从
DateTime
返回unix时间,MySql提供了一个名为的内置方法。要返回毫秒数,只需乘以1000,因为unix时间戳是自1970年1月1日以来的秒数(不包括闰秒)。如果要存储unix时间,则必须使用int数据类型

请注意,如果您确实存储unix时间,而不是将实际的
DateTime
值存储在
DateTime
数据类型列中,您将失去轻松使用所有内置数据库函数的能力。例如,如果您想知道有多少行属于一个特定的月份,首先必须将数据从int转换为datetime,然后才能计算出来

您还将失去准确性(因为unix时间即使在1秒分辨率上也是不准确的,因为它忽略了闰秒)

因此,总结一下——当数据库提供适合数据的数据类型时,不要使用其他数据类型存储该数据。如果只想存储日期,请使用数据类型;如果要存储日期时间值,请使用数据类型;如果要存储一天中的特定时间,请使用数据类型

附加说明

在处理日期时间值时,尤其是当您必须处理来自多个位置的客户端时,请始终仅在数据库中存储UTC日期时间,

不要。DateTime值应存储为DateTime。除非您有很好的理由以其他方式存储它们(比如支持datetime的最小/最大值之外的日期和时间值),否则我建议将其保留在datetime列中。
UNIX\u TIMESTAMP
&
FROM\u UNIXTIME
加上乘除*/1000使用时间戳。看到了,你建议用datetime存储日期吗?并使用SELECT格式?我在回答中详细阐述了我的评论。希望有帮助,不要。DateTime值应存储为DateTime。除非您有很好的理由以其他方式存储它们(比如支持datetime的最小/最大值之外的日期和时间值),否则我建议将其保留在datetime列中。
UNIX\u TIMESTAMP
&
FROM\u UNIXTIME
加上乘除*/1000使用时间戳。看到了,你建议用datetime存储日期吗?并使用SELECT格式?我在回答中详细阐述了我的评论。希望有帮助。很好,如果我的情况是,我必须使用
datetime
并使用
UNIX\u TIMESTAMP
以秒为单位获取日期,或者将其乘以1000以毫秒为单位。我得到了它。非常感谢。您知道有哪个数据库管理系统不忽略闰秒,即“2018-07-01 00:00:01”和“2018-06-30 23:59:59”之间的差异是3秒而不是2秒吗?很高兴提供帮助:-)。我知道,不是DBMS忽略了闰秒,而是所有DBMS也忽略了闰秒。如果你运气好的话,你可以加载
'2016-06-30 23:59:60'
,但随后它会显示为
'2016-07-01 00:00:00'
(当然,我上一篇文章中的两个时间戳都应该是2016年,而不是2018年)。我所知道的任何数据库管理系统都不会实际计算出正确的差值。@d但我知道很多计算机系统在应用闰秒时只是重复59秒,以避免处理特殊情况下的时间验证。我不知道有哪种计算机软件真正将23:59:60视为有效时间。很好,如果我的情况是,我必须使用
datetime
并使用
UNIX\u TIMESTAMP
以秒为单位获取日期,或者将其乘以1000以毫秒为单位。我得到了它。非常感谢。