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)
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)
如果我选择"持续时间"字段,那就是我会这样做的一种方式.