tre*_*nik 25 mysql datetime unix-timestamp
我一直在使用unix时间戳.
我喜欢它,因为它很容易比较,它很快,因为我将它存储为整数.因为我使用的是PHP,所以我可以从unixtimestamp中获取date()函数的任何日期/时间格式.
现在,有些人说最好使用DATETIME格式.但除了更合适的名字,我没有看到任何优势.
使用DATETIME确实更好,如果是这样,有什么优势?
谢谢.
Gav*_*Gav 31
如果您将日期存储为数据库中的Unix时间戳,那么您将给自己带来繁重的负担.您必须将它们转换为您要使用的格式,您必须在日期范围之间进行计算,您必须构建查询以获取范围内的数据.这似乎是违反直觉的 - 当然,你的"程序员时间"最好用于解决实际问题?
以MySQL提供的正确格式存储日期和时间似乎更好的做法,然后使用数据库函数为您想要的数据创建查询.与下午阅读(和理解)下午相比,你浪费所有转换和捣乱的时间是巨大的11.6 MySQL日期和时间函数
我一直都是unix时间戳的忠实粉丝.但我认为正确答案是:"取决于".我最近做了一个表数据库,我只想列出URL.会有一个日期字段,但日期字段纯粹用于排序.即按last_crawled排序.这意味着我永远不会在该字段上使用任何内置日期函数.它只是一种简单的方法来获取最早的条目,我永远不会将日期函数应用于此字段.现在,如果我把它作为日期字段,我会失去两件事:
但是,对于另一个系统,我必须存储交易信息.这使得使用内部mysql日期函数成为可能,当我们不得不开始做报告时,它们变得非常有用.
使用MySQL日期/时间类型的一个优点是能够更简单地使用MySQL中的日期/时间函数.
该DATE类型还具有以下优点:它只存储日,月和年,因此没有浪费的空间或比较复杂性,因为在您只关心白天而不是时间的情况下,自纪元时间起几秒钟.
就个人而言,我倾向于使用数据库作为数据转储,因此这些功能没什么意义.在PHP中,我倾向于只以整数格式存储日期,这几乎是你陈述的原因.
@Smita V,您引用的低效查询只是因为您将转换函数错误地应用于每个表行,您应该将它应用于条件本身.而不是
select col1,col2,colUnixdatetime from table where From_Unixtime(colUnixdatetime) between wtvdate1 and wtvdate2
Run Code Online (Sandbox Code Playgroud)
,它会转换表格中的每一行,将其与您所拥有的日期进行比较.你应该用
select col1,col2,colUnixdatetime from table where colUnixdatetime between UNIX_TIMESTAMP(wtvdate1) and UNIX_TIMESTAMP(wtvdate2).
Run Code Online (Sandbox Code Playgroud)
这样做将使用适当的表索引.
@treznik不久之前,由于上面提到的原因,我从uts整数移动到日期时间或时间戳数据类型,因为它们更容易阅读和操作(我做了很多直接表访问).但是我最近开始重新考虑这种方法有两个原因:
我自己也在试图找出答案.