2012-08-22 14 views
5

He una tabla llamados datos en otros no tengo id, start_date, end_date, day_count, day_type.
Donde id es la clave principal, start y end_date es datetime, day_count es int y day_type es varchar. Ahora day_type store DÍA, SEMANA, MES como valor cuando la solicitud realizada por el usuario y día de campo espera número de días como 1 a 60.Mysql DATE_ADD INTERVALO con campos de la tabla de MySQL

Ahora quiero usar este conteo y escribir la función incorporada date_add mysql.

He intentado pasarlo de la siguiente manera, pero es un error de muestra.

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 es 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 pequeña pista favor sería grande.

+1

Por favor, edite la pregunta y agregue el error que está recibiendo. – walrii

+2

Igual que http://stackoverflow.com/questions/888971/how-to-use-a-string-column-value-as-a-mysql-date-interval-constant-day-month – Barmar

Respuesta

7

Esta consulta funciona en MySQL, pero ¿qué es exactamente lo que quiere mostrar sin Group, etc.?

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

gracias que funcionó y yo obtuve lo que quería. –

+0

exactamente lo que necesitaba saber, que no puedo usar un campo como el tipo de intervalo. CASE funciona bien como alternativa. – DaveK

Cuestiones relacionadas