Unix timestamp vs datetime

Possible Duplicate:
Datetime vs Timestamp?

I have a Mysql table, which has a column add_date. It tracks the date/time when the record was added to the database.

Queries based on this table:

  1. Display when the record was added in the format: 2 hours ago, 4 weeks ago, 1 year ago etc
  2. Allow users to search records inserted in any day/month/year. So the user may be allowed to choose to see the records inserted in 2009 only.

Which would be better in this case – unix timestamp or datetime?

Right now I’m using both, but since the table will have millions of records over time, having both columns may affect the size of the database.

Unix timestamp seem to be better for conversion to 2 hours ago format in PHP and also it is timezone independent. But datetime has better readability and making a query for a particular date/time/year seems easier.

Your suggestion?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

When you have the choice, I’d say go for mySQL dates.

  • You won’t have to take care of date range issues
  • You can easily query time spans using mySQL’s date functions (BETWEEN(), DATE_ADD etc.)
  • Date related queries will be much faster, especially when you have millions of records, because you won’t have to use FROM_UNIXTIME() which can be expensive in large queries
  • It’s child’s play to convert DATE fields into UNIX timestamps when necessary.

Method 2

I’d go for the mysql formats, just because mysql has a plenty of datetime function, to use which with timestamp will cost you another conversion.

but since the table will have millions
of records over time, having both
columns may affect the size of the
database.

oh my.
are you really concerned in 4 additional megabytes of space?

Method 3

You can get the best of both worlds by using a unix timestamp and the MySQL from_unixtime() function to convert the result to datetime format where needed.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x