2012-08-22 33 views
5

Tôi có một bảng được gọi là dữ liệu trong đó tôi có id, start_date, end_date, day_count, day_type.
Trường hợp id là khóa chính, bắt đầu và end_date là datetime, day_count là int và day_type là varchar. Hiện tại DAY_type lưu trữ DAY, WEEK, MONTH là giá trị khi người dùng yêu cầu và trường ngày giữ số ngày như 1 đến 60.Mysql DATE_ADD INTERVAL với các trường bảng mysql

Bây giờ tôi muốn sử dụng số này và nhập vào date_add mysql được cài sẵn.

Tôi đã cố gắng chuyển nó như dưới đây nhưng lỗi hiển thị của nó.

SELECT 
datas.day_count, 
datas.day_type, 
MIN(datas.start_date) AS MinDate, 
MAX(datas.end_date) AS MaxDate, 
DATE_ADD(MaxDate,INTERVAL datas.day_count datas.day_type) AS ExactDate, 
datas.trade_service_id 
FROM datas 

Erro là You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datas.day_type)) AS ExactDate, datas' at line 13 Hãy gợi ý nhỏ sẽ là tuyệt vời.

+1

Vui lòng chỉnh sửa câu hỏi và thêm lỗi bạn đang gặp phải. – walrii

+2

Giống như http://stackoverflow.com/questions/888971/how-to-use-a-string-column-value-as-a-mysql-date-interval-constant-day-month – Barmar

Trả lời

7

Truy vấn này hoạt động trong MySQL nhưng bạn chính xác muốn kết xuất mà không có Nhóm và như vậy?

SELECT 
datas.day_count, 
datas.day_type, 
MIN(datas.start_date) AS MinDate, 
MAX(datas.end_date) AS MaxDate, 

start_date, min(start_date) as min_date, 
case day_type 
    when 'MONTH' then DATE_ADD(MAX(datas.end_date),INTERVAL datas.day_count MONTH) 
    when 'DAY' then DATE_ADD(MAX(datas.end_date),INTERVAL datas.day_count DAY) 
end as ExactDate, 

datas.trade_service_id 
FROM datas 
+2

thanx thats hoạt động và tôi có những gì tôi muốn. –

+0

chính xác những gì tôi cần biết, rằng tôi không thể sử dụng trường làm loại khoảng thời gian. CASE hoạt động tốt như một sự thay thế. – DaveK