2010-10-01 81 views
1

需要幫助PHP/MySql。需要從「今天」中選擇所有記錄。選擇* from表where date =今天

我的表有一個coloumn,它包含一個unixtime郵票,我只想從unixtime stamp = today的表中選擇。

很高興在linux命令行上這樣做只需要基本的MySql查詢?

回答

3

既然你標記的PHP,我會提供一個PHP的答案:

list ($y, $m, $d) = explode('.', date('Y.m.d')); 
$today_start = mktime(0, 0, 0, $m, $d, $y); 
$today_end = mktime(23, 59, 59, $m, $d, $y); 
// do the query with this clause: 
// ... WHERE unix_timestamp BETWEEN $today_start AND $today_end 
+0

你有你的封裝日期字符串中的'''或'「''一樣日期( '年月日')' – RobertPitt 2010-10-01 10:41:32

2

SELECT * FROM table_name的WHERE DATE(日期)= DATE(NOW())

1

合適的WHERE子句可能是:

CAST(FROM_UNIXTIME(<your_field>) AS DATE) = CURDATE() 
  • FROM_UNIXTIME() - 轉換到MySQL DATETIME
  • CAST(AS DATE) - 剛剛得到的日期部分
  • CURDATE() - 獲取當前日期
13

我會去的SQL版本:

SELECT * FROM table WHERE DATE(timestamp_field) = CURDATE();

+3

使用DATE(FROM_UNIXTIME(timestamp_field))如果timestamp_field持有不秒鐘。自1970年以來 – nos 2010-10-01 10:42:24

+1

+1雖然我也會使用'CURDATE()'或'CURRENT_DATE'而不是'DATE(NOW())' – wimvds 2010-10-01 10:45:33

+0

那裏 - 我修正了它 - 現在它使用CURDATE():-) – mbanzon 2010-10-01 13:00:22

1
SELECT * FROM tbl WHERE date >= CURDATE() 
1
 
$q="select * from table where date >'".date("Y-m-d 00:00:00")."' and date <'".date("Y-m-d 23:59:59")."'"; 
1

我的桌子上有一個日期時間欄,我用這個成功了

SELECT * FROM orders WHERE DATE(order_time) = DATE(NOW()) 
3

以下是這樣做的正確方式:

WHERE `date` BETWEEN UNIX_TIMESTAMP(DATE(NOW())) AND UNIX_TIMESTAMP(DATE(DATE_ADD(NOW(), 1 DAY))) 

如果對未來沒有值(明天,明天后第2天,等等),那麼就可以簡化爲:

WHERE `date` >= UNIX_TIMESTAMP(DATE(NOW())) 

,當你改變你的date域類型爲datetime可能的查詢將是:

WHERE `date` >= DATE(NOW()) 

當我說「正確」時,我的意思是這些查詢可以是通過使用索引進行了優化。像DATE(order_time) = DATE(NOW())這樣的查詢 - 不能,因爲它是一個表達式。