2012-03-30 48 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庫。它非常簡單,您可以使用時間戳進行所有計算。