2012-03-30 52 views
-1

我已经有三个时间字段的表。一个注册用户开始工作的时间,停止工作时的时间和差异。现在我想添加星期几(星期一至星期日)和日期。我该如何正确地做到这一点,然后说我会在过去7天内抓住用户的工作时间。 我读过那个时间戳给所有的信息,但我不知道我是否可以将日期分开?如何正确管理时间mysql

**table name = date_time 
date_time_id = auto increment 
user_id = var 
time_in = time 
time_out = time 
time_dif = time** 

ps:我正在使用java(servlets)和mysql。

谢谢你们

+0

请发表您的表格结构到目前为止。 – 2012-03-30 00:30:05

回答

0

当我开始变得与MySQL的yime真的很傻,我用UNIX时间。 MySql也内置了用于unix时间转换的函数。 FROM_UNIXTIME()就是其中之一。 Here's url of a reference page I use

我已经被MySql时间烧毁了(可能更多是因为我自己的困惑)几次,所以我更喜欢unix时间,然后我可以通过将秒数分解成几分钟* 60和小时* 60 * 60和天* 24 * 60 * 60。

+0

谢谢,但我真的很想知道timestamp是如何工作的,以及是否可以使用我想要的方式。 – Camus 2012-03-30 00:46:57

+0

我记得真正的问题是,MySql限于2个时间戳列(就内置行为而言)。我正在写信用卡处理应用程序,还需要3个时间戳。我建立了一个测试数据库,并使用所有不同的时间戳字段。最终,我只使用和信任创建automagical MySql功能的时间条目。否则,所有这些都是修改时间或计时的所有时间。 :P – 2012-03-30 01:23:25

+0

因此,您认为最好使用表格中的其他字段分别注册TIME字段的日,月和年。因为我正在阅读一些解释,计算两个时间戳之间的差异以获得格式化时间似乎非常诡异。你怎么看? – Camus 2012-03-30 01:32:55

0

将您的列类型更改为TIMESTAMP而不是TIME。时间戳包括日期和时间。

+0

谢谢,我知道这一点。但是,我想知道的是,我如何只抓住一天或一个月。 – Camus 2012-03-30 00:47:54

+0

您可以使用[EXTRACT](https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_extract)。但是如果你想检查日期是否在过去的一周内,最好使用[SUBDATE](https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions。 html#function_subdate)从[CURRENT_TIMESTAMP](https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_current-timestamp)中减去7天,并比较存储的时间戳反对。 – Wyzard 2012-03-30 00:52:36

+0

好的再次感谢。就一件事。我听说如果我想要两个时间戳之间的差异;例如:18:35:47,18:32:45结果是302而不是03:02。所以这是我的担忧。 – Camus 2012-03-30 01:02:30

0

你应该甲肝列datetime类型,这样就可以轻松搞定天月一周所需的一切。

这里列为与datetime现场需要,您可以使用所有功能:

Date and Time Functions

0

使用org.joda日期时间java库。它非常简单,您可以使用时间戳进行所有计算。