从mysql数据库获取普通日期和时间戳之间的值

时间:2011-11-15 06:53:06

标签: php mysql

我有一个标准的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"

3 个答案:

答案 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');