2012-08-22 10 views
5

Ich habe eine Tabelle mit dem Namen Daten dort Ich habe id, start_date, end_date, day_count, day_type.
Wo id ist Primärschlüssel, Start und end_date ist Datetime, day_count ist Int und day_type ist Varchar. Jetzt day_type speichern DAY, WEEK, MONTH als Wert, wenn Benutzer Anfrage und Tag Feld halten Anzahl von Tagen wie 1 bis 60.Mysql DATE_ADD INTERVAL mit mysql Tabellenfelder

Jetzt möchte ich diese Anzahl verwenden und date_add mysql Built-in-Funktion eingeben.

Ich habe versucht, es wie folgt zu übergeben, aber seine Show Fehler.

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 ist 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 Bitte kleiner Hinweis groß sein würde.

+1

Bitte bearbeiten Sie die Frage und fügen Sie den Fehler hinzu, den Sie bekommen. – walrii

+2

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

Antwort

7

Diese Abfrage funktioniert in MySQL, aber was möchten Sie ohne Gruppe und so weiter ausgeben?

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 arbeitete und ich bekam was ich wollte. –

+0

genau das, was ich wissen musste, dass ich kein Feld als Intervalltyp verwenden kann. CASE funktioniert gut als Alternative. – DaveK