Cột d
là DATE, cột t
là thời gian, cột v
là, ví dụ: INT. Giả sử tôi cần tất cả các giá trị được ghi lại sau 15:00 từ ngày 1 tháng 2 năm 2012 trở đi. Nếu tôi viếtLàm thế nào để kết hợp ngày và giờ từ các cột MySQL khác nhau để so sánh với một DateTime đầy đủ?
SELECT * FROM `mytable` WHERE `d` > '2012-02-01' AND `t` > '15:00'
tất cả các hồ sơ được thực hiện trước 15:00 vào bất kỳ ngày nào sẽ bị loại khỏi tập hợp kết quả (cũng như tất cả được thực hiện vào 2012-02-01) trong khi tôi muốn xem chúng. Dường như nó sẽ dễ dàng nếu có một cột DATETIME duy nhất, nhưng có các cột riêng biệt cho ngày và giờ thay vì trong trường hợp của tôi.
Điều tốt nhất tôi có thể nhìn thấy bây giờ là cái gì đó như
SELECT * FROM `mytable` WHERE `d` >= '2012-02-02' OR (`d` = '2012-02-01' AND `t` > '15:00')
Bất kỳ tốt hơn ý tưởng? Có lẽ có một chức năng cho điều này trong MySQL? Không có gì giống như
SELECT * FROM `mytable` WHERE DateTime(`d`, `t`) > '2012-02-01 15:00'
có thể?
Điều này thực sự có nghĩa là để làm việc ok với ngày-thời gian (có nghĩa là không có tổn thất hiệu suất đáng kể và không có hành vi bất ngờ)? – Ivan
Tôi không chắc .. bạn có thể chạy 'giải thích' trên nó, và xem nó hoạt động như thế nào. Tất nhiên, bạn luôn có thể cập nhật hàng loạt bảng của mình để sử dụng một cột ngày giờ thay vì hai cột riêng biệt. –
nếu bạn thực sự muốn có một ngày, bạn có thể sử dụng nó thay vì http://dev.mysql.com/doc/refman/5.5/vi/date-and-time-functions.html # function_str-to-date –