我有一个标准的mysql时间戳,格式为2011-11-14 20:06:24。只要将新记录添加到名为lead的表中,就会添加此时间戳。
我有两个输入字段供用户以日期和日期输入dd / mm / yyyy格式。一旦用户输入两个日期并按下按钮,值将被传递到其他字段以从表格中获取记录,这些记录在时间范围之间插入。
我尝试了以下查询,但它无效
SELECT DATE_FORMAT(added_on, '%d/%m/%Y') as date
FROM lead
WHERE added_on BETWEEN "10/11/2011" AND "14/11/2011"
答案 0 :(得分:4)
使用日期,日期时间和时间戳的标准格式:'2011-11-14'
而非'14/11/2011'
。
使用单引号,而不是双引号。
如果added_on
是时间戳,则不应使用BETWEEN
,否则您将丢失去年的几乎所有记录,因为'2011-11-14'
将转换为'2011-11-14 00:00:00'
。请改用:
WHERE added_on >= '2011-11-10'
AND added_on < '2011-11-15' --- note the "< the next day"
或
WHERE added_on >= '2011-11-10'
AND added_on < ('2011-11-14' + INTERVAL 1 DAY)
您应该仔细阅读 MySQL docs: TIMESTAMP properties
页面,了解MySQL中如何处理(并自动插入,更新)时间戳以及 MySQL docs: Timezone support
答案 1 :(得分:2)
你必须先在php
中转换日期你可以使用php的“日期”功能来根据mysql隐藏日期格式,如下所示:
$converteddate = date('Y-m-d',strtotime($yourposteddate));
这将以格式返回日期,例如2011-08-15可以通过mysql理解,然后在mysql中正常使用它。
答案 2 :(得分:0)
SELECT DATE_FORMAT(added_on, '%m/%d/%Y') as date
FROM lead
WHERE added_on BETWEEN DATE_FORMAT("20/11/2011",'%m/%d/%Y')
AND DATE_FORMAT("21/11/2011", '%m/%d/%Y');