2010-08-17 255 views
1

我想從表中選擇對應於特定日期的所有行。 我有存儲在2010-08-18 04:43:00模式中的時間戳。 如果我想選擇一天內所有行,我該如何查詢表格?查詢mysql:從時間戳中選擇

我能想到的一種方法是獲取當天的時間戳,將其轉換爲Unix時間戳,然後查詢表。但這聽起來很多工作。有沒有更容易的選擇?

非常感謝。

+3

模式?存儲此模式的列的數據類型是什麼 - DATETIME或VARCHAR/etc? – 2010-08-17 23:18:41

回答

1

邁克爾介紹的方法工作,但基於字符串,因此效率不高的基於整數的搜索。

我在創建兩個UNIX時間戳(一個用於00:00:00,一個用於23:59:59)和檢查以確定您是否在此時間內沒有看到問題。 (確保實際計算這兩個單獨的值以確保您考慮夏令時)。

你甚至可以使用MySQL來獲得這些值,如果你真的不想自己做(SELECT UNIX_TIMESTAMP("$Timestamp 00:00:00"), UNIX_TIMESTAMP("$Timestamp 23:59:59")),然後使用這兩個值。

如果你有一個小的數據集,邁克爾上面的方法是好的。

+0

+1基於非字符串,很好的信息:) – 2010-08-17 23:36:13

1

很簡單:

SELECT * 
FROM `table_name` 
WHERE DATE(`date_column`) = '2010-08-17'; 

注意,也只會是有效的,如果你的date_column的類型是TIMESTAMP或DATETIME的。

編輯: 由於馬丁提出了與性能的一個點,你可能想試試這個,而是如果速度是一個問題(在一個巨大的數據集)。 BETWEEN將使用任何可用的索引。

SELECT * 
FROM `table_name` 
WHERE `date_column` BETWEEN '2010-08-17 00:00:00' AND '2010-08-17 23:59:59'; 
+0

在MySQL中是否可以運行? – 2010-08-18 00:22:48

+0

我不太確定這一點。 – 2010-08-18 01:00:11