如何從使用時間戳的數據庫字段中進行選擇,當我從php獲得的所有日期都是日期時?php日期和mysql時間戳比較
$date = 2012-10-03;
類似:
"select value from table where completed_date = $date"
僅completed_date價值真的像「2012年10月3日2點16分10秒」我真正想的是,是相同的所有值一天作爲$日期,並且查詢幾乎忽略此查詢的時間戳的時間方面。那可能嗎?
謝謝!
如何從使用時間戳的數據庫字段中進行選擇,當我從php獲得的所有日期都是日期時?php日期和mysql時間戳比較
$date = 2012-10-03;
類似:
"select value from table where completed_date = $date"
僅completed_date價值真的像「2012年10月3日2點16分10秒」我真正想的是,是相同的所有值一天作爲$日期,並且查詢幾乎忽略此查詢的時間戳的時間方面。那可能嗎?
謝謝!
由於您提供的日期已經是一個有效的MySQL郵戳,它可以是簡單的:
SELECT ... WHERE DATE(completed_date)='2012-10-03'
這將起作用,但不會使您能夠使用該字段上的任何索引。 –
是的,但由於日期不是以原生格式存儲的,因此對於涉及部分日期匹配的任何事情,您都必須執行類似操作或使用字符串操作。 –
使用DATE_FORMAT格式化MySQL的日期:
"select value from table where DATE_FORMAT(completed_date,'%Y-%m-%d') = $date"
你需要嘗試這樣的事情,
"select value from table where completed_date like '$date%'"
如果您正在查找與您的時間戳相同的日期(不是時間戳+ 24小時或其他),所有條目都是索引友好的答案。 –
雅,我猜想OP只是在尋找場地的日期部分,因爲他/她想'忽略時間方面'。 –
如果你的數據庫字段是一個Unix時間戳,你會用FROM_UNIXTIME
詳細here。
如果您的數據庫字段(col
)是datetime
類型,那麼您應該使用SELECT ... WHERE col LIKE '2012-10-03%'
。
如果你的數據庫字段(col
)是date
類型的,你會SELECT ... WHERE col = '2012-10-03'
。
如果completed_date
是一個時間戳字段,不是VARCHAR,那麼你可以做這樣的事情:
"SELECT value FROM table WHERE completed_date>=? AND completed_date<?"
並綁定中的參數:
$date="2012-10-03";
$start=date("Y-m-d G:i:s",strtotime($date));
$end =date("Y-m-d G:i:s",strtotime($date.' +1day'));
我更喜歡使用'BETWEEN'子句而不是'x> = y AND x <= z'。箭頭總是讓我困惑。 – NullUserException
@NullUserException但是,「BETWEEN」不包含在內。通過「2012-10-03」會搜索「2012-10-03 00:00:00」。 – Kermit
@njk男人說,它是[含](http://dev.mysql.com/doc/refman/5.0/en/comparison-operators。html#operator_between) – NullUserException
請注意,您還需要指定一個像'$日期=「你'$ date'變量2012- 10-03';'(注意關於數據值的sinlge引號。 –
@NullUserException請讓你的答案成爲答案,這樣我就可以標記它了。 – ackerchez