在DB中创建日期,日期和时间 - 问题

时间:2010-09-04 05:38:17

标签: database datetime

Create_date - >假设它将记录为5/2/2009。为了搜索目的,搜索创建日期时,我们可以按个别月份或年份搜索,或者我们是否需要为此记录create_day,create_month,crate_year?用户内容的搜索过滤器就像示例一样 - > “显示过去2周,上个月,去年,当前月份的内容”

create_day - >当我们记录数字日期时,我们可能需要多次显示文本日(即:星期四)以显示对象的创建时间。就像我们在2009年1月29日星期四下午3:45创建的社交网站上看到的那样。要获得此输出,我们是否需要为所有对象/活动记录create_day,还是在应用程序级别的每个页面加载时计算?

create_time - >我们什么时候存储在DB中?用户当地时间还是固定时间?这是一个全球性的网站。如果修复了那么我们假设我默认做GMT。接下来的问题是如何向用户显示正确的时间以使其与当地时间相匹配?必须考虑到美国时间每年变化两次(日光节省)的计算。或者,也许总是以GMT记录时间,但是根据检测到的时区将其显示给用户,但这意味着计算每个页面加载时间区的时间?

因为我在这里,一边Q->查找表和引用表之间有什么区别吗?如何区分这两个表 - > “Account_status”,其值为Active,Confirmed等...和另一个具有城市名称的“City”表。第一个表是仅在后端使用的系统ID表。城市表是用户从中选择城市时使用的ID表。这些都是查找或引用还是相同/不同?

1 个答案:

答案 0 :(得分:0)

  • Create_date 您通常希望使用DMBS基础日期存储类型,该类型存储日期的所有部分(如果需要,还有时间,如MySQL日期时间)。这开启了在DBMS中使用日期处理功能的能力。对于过滤器示例,您将计算2周前的日期。您可能还有一个函数在DBMS中指定这样的字符串。 PHP的strotime()允许这样做。
  • Create_day 文本输出是自动的(例如MySQL日期时间),或者很容易呈现您需要的任何部分。 (PHP date()可以这样做)。为每条记录存储时间戳(日期时间)通常是一个好主意。
  • Create_time 如果是全球应用,您需要使用UTC / GMT。每个用户都将其偏移量应用于时间和表单提交(例如搜索)。 PHP的DateTime对象允许指定时区名称作为偏移量。用户可以从列表中进行选择,但是在其标准格式中这是一个很大的列表,如果它甚至不匹配他们的城市(http://us.php.net/manual/en/timezones.php),则对可用性的影响不大。另一种选择是通过Javascript获取用户计算机的时区。
  • 查找表是的,这些都是查找表。