Php 选择带有日期的数据库数据
我有一个表名事务Php 选择带有日期的数据库数据,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个表名事务 +-------+---------------------+--------+ | t_id | date | amount | +-------+---------------------+--------+ | 10 | 2016-04-17 19:24:05 | 1800 | | 12 | 2016-06-11 12:40:13 | 200 | | 17 | 2016-04-13 14:42:04 | 100
+-------+---------------------+--------+
| t_id | date | amount |
+-------+---------------------+--------+
| 10 | 2016-04-17 19:24:05 | 1800 |
| 12 | 2016-06-11 12:40:13 | 200 |
| 17 | 2016-04-13 14:42:04 | 100 |
| 19 | 2016-05-14 17:45:43 | 1 |
| 20 | 2016-08-15 19:45:54 | 999 |
| 21 | 2016-01-17 11:46:02 | 1500 |
| 41 | 2016-02-18 17:23:14 | 500 |
| 42 | 2016-07-19 13:26:14 | 500 |
| 43 | 2016-02-18 17:23:15 | 500 |
| 44 | 2016-02-18 17:23:16 | 500 |
| 45 | 2016-02-18 18:23:16 | 500 |
| 46 | 2016-02-18 17:23:16 | 500 |
| 47 | 2015-10-18 14:23:17 | 500 |
| 48 | 2015-11-18 17:23:17 | 500 |
| 49 | 2015-12-18 11:23:18 | 500 |
| 50 | 2015-05-18 11:25:54 | 1000 |
| 51 | 2015-09-18 12:26:22 | 3000 |
| 52 | 2015-05-18 13:48:59 | 10 |
| 53 | 2015-03-18 15:48:59 | 10 |
| 54 | 2015-01-18 17:49:13 | 5000 |
+-------+---------------------+--------+
我想选择带有日期的记录
我用
我还可以在2个日期和我使用的日期之间进行选择
SELECT * FROM transactions WHERE date<'2016-02-18' AND date>'2016-02-01';
从日期为'2016-02-01'的交易中选择*;
但它不起作用。(我使用php Mysql xampp)
你能帮我理解这些概念吗?你应该在。。。和…
SELECT * FROM transactions WHERE `date` BETWEEN '2016-02-01' AND '2016-02-18';
是mysql数据库吗
如果比使用日期
功能更有效:
SELECT * FROM transactions WHERE DATE(date)='2016-02-18';
或
用这个
在查询中使用%等。您将在给定日期内获得所有结果
SELECT * FROM transactions WHERE date like '2016-02-18%';
对于ist查询,您需要使用
DATE()
函数,因为您的列类型是DATETIME
或TIMESTAMP
,因此您可以按以下方式处理它:
SELECT * FROM transactions WHERE DATE(date) = '2016-02-18';
对于第二个查询,您只需将时间添加为:
SELECT * FROM transactions WHERE date > '2016-02-01 00:00:00' AND date < '2016-02-18 23:59:59';
从日期为“2016-02-01 00:00:00”且日期为“2016-02-18 23:59:59”的交易中选择*;
你说的“它不工作”是什么意思?您是否收到错误消息?它是否返回了错误的数据?日期列的类型是什么?timestamp/datetime或string?同样,amount看起来很像字符串:-(为什么OP“试试这个”一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的SO访客。我如何选择当前或上个月的所有交易。因为所有月份都不是30天。所以这对我来说是一个大问题。@JayBlanchard在写的地方你不应该在答案中写“尝试这个”。我有即使是很多拥有300k的用户,他写了“试试这个”和“使用这个”,但没有人可以干涉,所以你为什么这么说。你可以在帖子上发表评论,但如果我的查询是正确的,那么你无权否决。如果你受伤了,我很抱歉。我没有受伤,如果我看到一个300k的用户做同样的事情,我也会做出同样的评论。有解释的答案总是更好的呃。他们不仅要教OP,还要教其他将要阅读答案的人。我的评论不是干涉,而是指导。如何处理它是你的选择。我没有否决你的答案,其他人否决了。我从来没有否决过一个有效的答案。OP为什么要“使用这个”一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。当你进行编辑时,你没有解释OP为什么应该使用%
和类似的。你只是告诉他们在没有任何上下文的情况下使用它。:)如何选择当前或上月所有交易记录。因为所有的月份都不是30天。所以这对我来说是个大问题。你认为他的专栏是DATETIME专栏吗?OP从未具体说明这一点,即使有人问了这个问题。:)@杰伊·布兰查德你好,先生。。是的,你百分之百正确。但在价值上,我只是看到了24小时制,并猜测了它的日期和时间。。mmaybe DATETIME或timestamp如何选择当前或上月所有事务。因为所有的月份都不是30天。所以这对我来说是个大问题。我如何选择当前或上个月的所有交易。因为所有的月份都不是30天。所以这对我来说是个大问题。对不起,我不知道你想要什么。也许你应该看看mysql文档来解决这个问题:。或者重新表述你的需求。(或者您可能只需要使用“MONTH()”函数?)
SELECT * FROM transactions WHERE DATE(date) = '2016-02-18';
SELECT * FROM transactions WHERE date > '2016-02-01 00:00:00' AND date < '2016-02-18 23:59:59';