什么是在MySQL大于TIME范围内存储持续时间的最佳方法?

cos*_*ari 12 mysql time duration

我需要一种在db字段中存储持续时间的方法.我正在建立一个网站,客户应该能够选择从特定开始日期开始显示广告的时长.

我曾经考虑过使用TIME,但最大值为'838:59:59',大约需要34天.客户可能希望广告的存在时间更长.

那么处理这个问题的最佳方法是什么?只是一个非常大的INT?

mwa*_*ngi 12

如果你打算有一个列用于开始时间而一个用于持续时间,我认为你可以在几秒钟内存储它.所以,我假设你会有这样的事情;

+-----------+--------------------------+------------------+
| advert_id | start_time               | duration_seconds |
+-----------+--------------------------+------------------+
| 2342342   |'2012-11-12 10:23:03'     | 86400            |
+-----------+--------------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

(为了这个例子,我们将这个表称为adverts)

  1. advert_id - 指向您广告的密钥
  2. start_time - 广告应该开始的时间(数据类型 - TIMESTAMP)
  3. duration_seconds - 广告应该"生效"的时间(以秒为单位)(INTEGER(11)

    SELECT TIME_TO_SEC(timediff(now(),start_time))为'time_difference_in_seconds_since_advert_started'FROM adverts;

如果您只想获得未过期的广告,您将运行这样的查询;

SELECT * FROM  `adverts` WHERE TIME_TO_SEC(timediff(now(),start_time))<=`duration_seconds`;
Run Code Online (Sandbox Code Playgroud)

如果我选择"持续时间"字段,那就是我会这样做的一种方式.