2011-10-19 27 views
6

Tôi có một bảng như thế này:thời gian kỷ nguyên và MySQL truy vấn

id | date 
---- | ----------- 
1 | 1319043263 
2 | 1319043578 

mà ngày định dạng lĩnh vực là trong kỷ nguyên. Tôi phải nhóm mọi hàng trong cùng một ngày và hiển thị chúng trong một nhóm riêng biệt. Làm thế nào tôi có thể làm điều đó trong MySQL?

Cảm ơn.

Trả lời

13

Nhóm By:

SELECT COUNT(`id`) AS `Records`, DATE(FROM_UNIXTIME(`date`)) AS `Date` 
FROM `table` 
GROUP BY DATE(FROM_UNIXTIME(`date`)) 

Output:

Records | Date 
-------------------------------- 
     10 | 2011-10-19 
     10 | 2011-10-18 

Sắp xếp theo:

SELECT `id`, FROM_UNIXTIME(`date`) AS `Date` 
FROM `table` 
ORDER BY DATE(FROM_UNIXTIME(`date`)) [ASC|DESC] 

(Mặc dù trong thực tế bạn sẽ nhận được đặt hàng tương tự sử dụng chỉ FROM_UNIXTIME () Hoặc thô date giá trị kể từ khi tất cả họ sẽ ngăn xếp đúng trong một nỗ lực đặt hàng)

Output:

 id | Date 
-------------------------------- 
     03 | 2011-10-19 12:00:00 
     02 | 2011-10-18 12:00:00 
     01 | 2011-10-17 12:00:00 

này chuyển đổi dấu thời gian unix thành một datetime mysql và sau đó trích xuất các giá trị ngày tháng từ đó được áp dụng để nhóm hoặc trật tự quy định tại khoản

Nếu bạn muốn nhóm theo ngày bất kể tháng và sử dụng năm nGÀY() thay vì DATE()

Tuy nhiên bạn có thể mở rộng trên một phần về "nhóm mỗi hàng vào ban ngày" . bạn muốn hiển thị kết quả gì? khi bạn nhóm vào một cái gì đó bạn sử dụng một số loại bộ xử lý tổng hợp như COUNT() hoặc SUM() trên một trường trong nhóm.

MySQL Group Functions Reference

MySQL Date & Time Function Reference

+0

Tôi muốn nhóm mọi hàng thuộc cùng một ngày duy nhất. – silvercover

+0

Ok, bạn đang tìm kiếm một mệnh đề ORDER BY sau đó – JoshHetland

+0

Tôi xin lỗi tôi đoán tôi không hiểu, bạn có thể thêm một ví dụ về đầu ra bạn muốn không? – JoshHetland

1

nghĩ nó khá như vậy, xem xét các yêu cầu đối với nhóm.

Chỉ cần thêm MIN/MAX làm ví dụ cho tập hợp tên miền.

SELECT 
    DATE(FROM_UNIXTIME(`epoch`)) AS `GroupedDate`, 
    MIN(FROM_UNIXTIME(`epoch`)) AS `DayStart`, 
    MAX(FROM_UNIXTIME(`epoch`)) AS `DayEnd` 
FROM 
    `timestamps` 
GROUP BY 
    DATE(FROM_UNIXTIME(`epoch`)) 
ORDER BY 
    `epoch` ASC; 
Các vấn đề liên quan