2013-07-25 71 views
0

編輯與部分答案:選擇(開始星期日)這一週創建的所有行

基本上,我想選擇纔有了今天的行,而不是過去的24小時,我想選擇七月份的行,而不是最後的31天(2013年7月1日 - > 7/31/13,非6/25/13 - > 7/25/13)。

這就是我用來選擇今天的行。我使用America/Los_Angeles作爲用戶指定時區的佔位符(將使用PHP填充)。下面使用的「時間戳」只是創建行時的標準MySQL時間戳。

SELECT * FROM table 
WHERE convert_tz(timestamp, 'UTC', 'America/Los_Angeles') 
>= DATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles')); 

在這一週的記錄,我仍然會使用DATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles'))得到用戶的時區當前的日期,但我不知道如何從獲得一週的第一天,例如,今天的日期返回7/25/13,但本週的第一天是7/21/13。

月,我可以把今天的日期,使用MONTH()函數只有一個月搶,然後通過執行

str_to_date(
     concat(MONTH([today's date from above]), 
      ' 01', 
      ' 2013'), 
     '%m %d %Y' 
) 

創建一個新的Date對象,這會給我的第一天這個月。如果需要,今年的行也可以做同樣的事情。

無論如何,只留下本週創建的行。 WEEKDAY()可能很有用,但我不確定。

+1

你有沒有試過只提取日期時間變量的日期部分? – Mason

回答

1

「自午夜以來」是沒有時間的當前日期。沒有時間的當前日期的MySQL函數是CURDATE(),將日期,時間或時間戳記轉換爲UNIX值的函數是UNIX_TIMESTAMP

SELECT * FROM your_table 
WHERE Ftimestamp_column > UNIX_TIMESTAMP(CURDATE()); 

還要注意的是MySQL的等效PostgreSQL的date_trunc功能DATE()

相關問題