php日期和mysql时间戳比较

php日期和mysql时间戳比较,php,mysql,Php,Mysql,当php中只有一个日期时,如何从使用时间戳的db字段中进行选择 $date = 2012-10-03; 比如: "select value from table where completed_date = $date" 只有completed_date的值实际上类似于“2012-10-03 02:16:10”。我真正希望的是所有与$date相同的值,并且对于查询,几乎忽略此查询时间戳的时间方面。可能吗 谢谢 使用日期\格式格式化mysql日期: "select value from ta

当php中只有一个日期时,如何从使用时间戳的db字段中进行选择

$date = 2012-10-03;
比如:

"select value from table where completed_date = $date" 
只有completed_date的值实际上类似于“2012-10-03 02:16:10”。我真正希望的是所有与$date相同的值,并且对于查询,几乎忽略此查询时间戳的时间方面。可能吗


谢谢

使用日期\格式格式化mysql日期:

"select value from table where DATE_FORMAT(completed_date,'%Y-%m-%d') = $date" 

你需要试试这样的东西

"select value from table where completed_date like '$date%'" 

如果您的数据库字段是Unix时间戳,您将使用
FROM\u UNIXTIME
detailed

如果您的数据库字段(
col
)是
datetime
类型,您将
选择。。。其中col如“2012-10-03%”


如果您的数据库字段(
col
)是
date
类型,您将
选择。。。其中col='2012-10-03'
如果
completed\u date
是一个时间戳字段,而不是varchar,则可以执行以下操作:

"SELECT value FROM table WHERE completed_date>=? AND completed_date<?"

我喜欢coder1984的答案,因为它不需要改变模式。但是,如果您通常要这样查询数据,我建议您在数据库中添加一个日期字段。

鉴于您提供的日期已经是一个有效的mysql日期戳,它可以简单到:

SELECT ... WHERE DATE(completed_date)='2012-10-03'

我不会反对投票,但您不应该以这种方式使用函数。您将无法利用“已完成日期”字段上的任何索引。@NullUserException使用
WHERE
子句中的函数可能会使任何可能的索引未使用。我更喜欢使用
BETWEEN
子句,而不是
x>=y和x@NullUserException,
之间的
不包括在内。传递
2012-10-03
将搜索
2012-10-03 00:00:00
@njk-man说它是@NullUserException,而不仅仅传递日期。请参阅。@NullUserException如果您请求两个日期之间的记录,结果确实包括第二个日期。如果您正在查找与时间戳相同日期的所有条目(不是时间戳+24小时或其他)。是的,我猜OP只是在搜索字段的日期部分,因为他/她想
忽略时间方面
。请注意,您还需要指定
$date
变量,如
$date='2012-10-03'(请注意SnLGGE在数据值周围的引用。@ NulLuSulExtExpRs使您的答案成为一个答案,这样我就可以正确地标记。”NJK NO,如果OP想考虑做一个DB模式改变,更多的意思是作为替代答案。如果不是,我认为CODDE1984是最好的解决方案。考虑到我在他面前回答,我给了自己信用。p@njk,仅供参考,答案如下从下到上按时间顺序排列。最近经常看到这种误解,因此必须澄清:)这会起作用,但不会使您在字段上使用任何索引。是的,但由于日期不是以本机格式存储的,因此您必须对任何涉及部分日期匹配的内容执行类似操作或使用字符串操作的操作。
SELECT ... WHERE DATE(completed_date)='2012-10-03'