MySql-如何解析附加了另一个字符串的日期

时间:2014-08-13 09:33:24

标签: php mysql sql

我有一个名为 DB 的数据库,其中有一个名为 log 的表。日志表具有以下结构。

 +----------------+--------------+------+-----+---------+----------------+
 | Field          | Type         | Null | Key | Default | Extra          |
 +----------------+--------------+------+-----+---------+----------------+
 | id             | bigint(64)   | NO   | PRI | NULL    | auto_increment |
 | BCReq          | varchar(400) | YES  |     | NULL    |                |
 | BCRes          | varchar(400) | YES  |     | NULL    |                |
 | ServerReq      | varchar(400) | YES  |     | NULL    |                |
 | ServerRes      | varchar(400) | YES  |     | NULL    |                |
 +----------------+--------------+------+-----+---------+----------------+

其中一条记录的 BCReq 字段的值如下所示:

 uId-->xxxxxx/regiodId-->yyy/videoTitle-->bcdes 
 /location-->Asia Pacific/BCreqtime-->24-07-2014
 10:30:16/Exception-->null

现在我想根据日期从日志表中获取数据。这可能吗?如果是的话怎么样?如果需要更多数据,请评论。谢谢。

1 个答案:

答案 0 :(得分:1)

然而,尽管我不喜欢数据的建模方式。 作为开发人员,我们不销售代码...我们提供解决方案:P

要求: 根据日期

从日志表中获取数据

SQL LIKE语句吧。 DBA可能会想要杀死我,因为你正在对可能是非索引的列执行LIKE搜索。例如

   SELECT * FROM log WHERE BCReq LIKE '%24-07-2014%'

但它会在当天给你所有登录记录,假设你想在白天获取它。 我相信你可以按小时,分钟,秒,甚至月份进行搜索。

另外,我身后的DBA只是对我发布的内容进行了谴责:P 所以这就是我试图在他眼中挽回自己。

使用非事务性连接执行查询,因此您不会为其他人锁定表。

但总而言之,需要对数据模型进行审核并解决以满足这一需求。


在2个日期之间解决您的搜索的其他信息: 如果您希望在2个日期内获取数据,由于您的数据模型,BCReq字段难以搜索,可行的解决方案是让开发人员编写应用程序或脚本来获取数据。

示例解决方案(伪代码)可以是:

  1. 从用户那里获取2个日期。我们称之为start_date&& END_DATE
  2. 将日期格式化为DD-MM-YYYY格式。
  3. 确定start_date和end_date
  4. 之间的days_
  5. start_date和end_date之间的每一天 上面运行SQL查询以检索数据 将从每次迭代中检索的数据存储到输出
  6. 对您的输出执行某些操作