Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Datumswerte via Prozess in DB schreiben

Datumswerte via Prozess in DB schreiben

Hallo zusammen,
ich habe zwei Integer-Felder in dem einmal der Monat und einmal das Jahr eingetragen ist. Die Datengruppe wird seit mehreren Jahren gefüllt.

Nun habe ich zusätzlich zwei neue Datetime-Felder eingefügt, in denen das Datum für den ersten eines Monats und der letzte Tag eines Monats aus den Angaben der beiden Integer-Felder (Monat und Jahr) eingetragen werden soll.
Für Neueingaben habe ich dies auf der Eingabeseite mit Javascript gelöst. Allerdings muss ich noch für alle bestehenden Datensätze die beiden neuen Datumsfelder füllen.

Ich habe versucht dies direkt auf der Datenbank mit SQL-Skripte zu lösen und bin an der UTC-Datumsumsetzung gescheitert, da es mir nur gelungen ist die Daten für die aktulle UTC-Zeit (Sommerzeit) zu erzeugen.
Hier mein Versuch erst einmal mit "Select":

select LID
,L_BEGINNMONAT as BeginnMonat
,L_BEGINNJAHR as BeginnJahr
,IIF(L_BEGINNMONAT>9,CONCAT('15.',L_BEGINNMONAT, '.', L_BEGINNJAHR),CONCAT('15.0',L_BEGINNMONAT, '.', L_BEGINNJAHR)) as BeginnDatumStr
,DATEADD(mm, DATEDIFF(mm, 0, IIF(L_BEGINNMONAT>9,CONCAT('15.',L_BEGINNMONAT, '.', L_BEGINNJAHR),CONCAT('15.0',L_BEGINNMONAT, '.', L_BEGINNJAHR))), 0) as BeginnDatum
,DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), DATEADD(mm, DATEDIFF(mm, 0, IIF(L_BEGINNMONAT>9,CONCAT('15.',L_BEGINNMONAT, '.', L_BEGINNJAHR),CONCAT('15.0',L_BEGINNMONAT, '.', L_BEGINNJAHR))), 0)) as BeginnDatumUTC
from XDATAGROUPE28928E221
where L_BEGINNMONAT is not null and L_BEGINNJAHR is not null

Nun würde ich es gerne mit einem Prozess und Groovy lösen wollen in der Hoffnung, dass Intrexx das jeweilige Datum in der 'richtigen' UTC-Zeitzone speichert.
Nur sind meine Groovy-Kenntnisse dafür nicht ausreichend.
Wer kann mir vielleicht dabei helfen?
02.08.2016 09:08 von Frank Preiß
Prinzipiell bräuchtest du dafür die Calendar-Klasse
aus dem Kopf heraus müsste das in etwa so aussehen:


def cal = Calendar.getInstance() // Hier evtl. noch die Zeitzone übergeben
def stmtUpd = g_dbQuery.prepare(conn, "update datagroup.....")
def stmtSelect = g_dbQuery.prepare(conn, "select lid,monat,jahr from datagroup.....")
rs = stmt.executeQuery()
while(rs.next()){
def iLid = rs.getIntValue(1)
def iMonth = rs.getIntValue(2)
def iYear = rs.getIntValue(3)
cal.set(iYear, iMonth, 1, 0, 0, 0)
stmtUpd.setTimestamp(1, cal.getTime())
stmtUpd.setInt(2, iLid)
stmtUpd.executeUpdate()
}

02.08.2016 09:23 von MartinW
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg