我有一个名为 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
现在我想根据日期从日志表中获取数据。这可能吗?如果是的话怎么样?如果需要更多数据,请评论。谢谢。
答案 0 :(得分:1)
然而,尽管我不喜欢数据的建模方式。 作为开发人员,我们不销售代码...我们提供解决方案:P
要求: 根据日期
从日志表中获取数据SQL LIKE语句吧。 DBA可能会想要杀死我,因为你正在对可能是非索引的列执行LIKE搜索。例如
SELECT * FROM log WHERE BCReq LIKE '%24-07-2014%'
但它会在当天给你所有登录记录,假设你想在白天获取它。 我相信你可以按小时,分钟,秒,甚至月份进行搜索。
另外,我身后的DBA只是对我发布的内容进行了谴责:P 所以这就是我试图在他眼中挽回自己。
使用非事务性连接执行查询,因此您不会为其他人锁定表。
但总而言之,需要对数据模型进行审核并解决以满足这一需求。
在2个日期之间解决您的搜索的其他信息: 如果您希望在2个日期内获取数据,由于您的数据模型,BCReq字段难以搜索,可行的解决方案是让开发人员编写应用程序或脚本来获取数据。
示例解决方案(伪代码)可以是: