Database 我应该在数据库中以长(滴答声)的形式存储日期时间吗?

Database 我应该在数据库中以长(滴答声)的形式存储日期时间吗?,database,datetime,Database,Datetime,如果将日期时间值保存为long,生活会变得更轻松吗?在使用空DateTime值时,似乎总是会出现问题,无论是存储还是检索-空DateTimes、无效DateTimes等等,都是一件让人头疼的事情 您是否建议只使用long数据类型,因为您总是可以从刻度创建日期时间 编辑: 我使用SqlServer和MySql。SqlDateTime是DateTime的.net派生。这三种平台在什么是有效日期时间方面存在差异。你是如何处理这些差异的?我想这取决于个人偏好。我总是和datetime类型打交道,对它们没

如果将日期时间值保存为
long
,生活会变得更轻松吗?在使用空DateTime值时,似乎总是会出现问题,无论是存储还是检索-空DateTimes、无效DateTimes等等,都是一件让人头疼的事情

您是否建议只使用
long
数据类型,因为您总是可以从刻度创建日期时间

编辑:
我使用SqlServer和MySql。SqlDateTime是
DateTime
的.net派生。这三种平台在什么是有效日期时间方面存在差异。你是如何处理这些差异的?

我想这取决于个人偏好。我总是和datetime类型打交道,对它们没有任何麻烦


如果您将它们存储为long,尽管在语义上它们不再是日期。如果你想做一个查询来选择在星期五(比如)添加的所有帐户,你就必须跳出几个圈套来解决这个问题。

我个人想不出任何突出的原因,数据库支持DateTime本身,并将它们存储很长一段时间,最终你可能会自食其果。假设您需要能够运行一个查询“在凌晨3点到下午6点之间获取所有行”-如果您将它们存储为记号,则需要将其转换回数据库中的日期时间

将它们存储为记号可能会妨碍许多其他操作,例如分组、排序、筛选等


如果数据库中的日期时间存在细微差别,如时区,强烈建议将日期时间标准化为特定时区,如UTC。团队在数据库中使用DateTime时面临的许多问题通常是由于不卫生的输入造成的,比如不规范时区。将其存储为记号仍然会有相同的问题。

否,请使用
datetime

使用空DateTime值时似乎总是会出现问题

如果您的列可为空,并且由于某种原因,当列的类型为
datetime
时遇到困难,那么当列的类型为
long
时,您也会遇到问题

。。。无效日期时间

如何将无效的日期时间放入
datetime
列?首先使用
datetime
列的目的之一是在允许插入数据之前进行某种验证。当使用裸
长的
时,很可能会得到无效的日期时间


最后,使用
long
意味着通过简单的SQL(
select*from table
)查看数据库将产生难以辨认的结果。

在某些情况下,是的。Sql以低于DateTime的精度存储DateTime。这意味着持久化和检索的值可能与原始对象的DateTime值略有不同,这可能会导致排序或比较出现一些问题。

DateTime存在的原因是:使用它。DateTime存在是为了方便,我只是考虑将DateTime值保存为数据库中的刻度。从数据库中检索long,我就可以根据滴答数创建DateTime了。我看不出有什么问题。使用< <代码> > <代码>解决了<代码>日期时间>代码>中的任何一个问题?TICK确实提供了更高的精度,并且可以跨多个数据库工作,在SQLServer、MySQL和.NET之间的差异似乎是无效的日期时间值……事实上,在你的问题中明确一些总是有帮助的。你是在问一个特定的数据库吗?在我问这个问题的时候,我正在从SQL Server&MySQL中提取数据。我不记得所有的细节,但DateTime在所有3个平台(包括.Net)中都起作用,因此将DateTime存储为一个“通用”的长时间。我相信我有权修改其中一个数据库,这将使我在.Net方面的生活更轻松(作为中介)。否则,我不关心DateTime列中长值的易读性,因为如果必要,我可以使用date函数/proc根据各自的平台显示日期。燃烧死亡和毁灭的箍环。