簡體   English   中英

從表中選擇*,其中date = today

[英]Select * from table where date = today

需要幫助PHP / MySql。 需要選擇“今天”的所有記錄。

我的表有一個coloumn,它有一個unixtime標記,我想從unixtime標記=今天的表中選擇。

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

我會去SQL版本:

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

由於您標記了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

以下是正確的方法:

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())類的查詢不能,因為它是字段上的表達式。

SELECT * FROM table_name WHERE DATE(date)= DATE(NOW())

合適的WHERE子句可能是:

CAST( FROM_UNIXTIME( <your_field> ) AS DATE ) = CURDATE( )
  • FROM_UNIXTIME () - 轉換為MySQL DATETIME
  • CAST(作為日期) - 只獲取日期部分
  • CURDATE() - 獲取當前日期
SELECT * FROM tbl WHERE date >= CURDATE()
$q="select * from table where date >'".date("Y-m-d 00:00:00")."' and date <'".date("Y-m-d 23:59:59")."'";

在我的桌子上有一個datetime列,我成功使用它

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM