[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    14

    MSSQL SERVER 2000

    hallo benötige dringend eure hilfe,

    ich verwende folgenden CODE:

    select op.opnr, op.fallnr, stp.patientenname, stp.geburtsdatum, op.opdatum
    from st_patient stp, op op
    where stp.fallnr=op.fallnr

    /*jetzt kommt noch ein Insert in die neue Tabelle OP1*/

    insert into op1
    select OPNr, FallNr, Patientenname, Geburtsdatum, OPDatum
    from op1

    Ziel ist: ich möchte das ABGEFRAGTE in die neue Tabelle reinschmeissen

    funktioniert aber nicht

    Berichtigt mich doch bitte, denn so funktioniert der die sql - anweisung NICHT

    Ich weiss mir keinen rat mehr

    Vielen dank!!!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    insert into op1
    select op.opnr, op.fallnr, stp.patientenname, stp.geburtsdatum, op.opdatum
    from st_patient stp, op op
    where stp.fallnr=op.fallnr

    Wenn im Select alle Felder definiert sind die auch in op1 definiert sind geht das so ansonsten:

    insert into op1 (opnr, fallnr, patientenname, geburtsdatum, opdatum)
    values(select op.opnr, op.fallnr, stp.patientenname, stp.geburtsdatum, op.opdatum
    from st_patient stp, op op
    where stp.fallnr=op.fallnr
    )
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    14
    super , vielen vielen dank das hat geklappt,

    sorry, ich habe noch ein problem , wo ich nicht weiter komme,

    ich habe eine tabelle opdauer mit den
    spalten:

    opnr , schnittzeit, nahtzeit, opdauer

    so jetzt möchte ich

    die schnittzeit von der nahtzeit abziehen und schließlich die spalte opdauer damit füllen,

    (sowohl die schnittzeit als auch die nahtzeit sind vom Typ "datetime")

    ergebnis soll lauten:
    z.B. 15:50:00 minus 14:45:00
    = 01:05:00

    wie geht das , kann mir da jemand weiterhelfen die richtige syntax dafür zu
    verwenden

    vielen dank im voraus!!!!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Mit SQL-Variablen kann man auch rechnen:

    select nahtzeit - schnittzeit as opdauer from myfile

    oder auch

    update myfile
    set opdauer = nahtzeit - schnittzeit

    In SQL wird die Dauer immer im Datum/Zeitformat geliefert, d.h., der Wert ist entsprechend zu interpretieren:
    JJJJ-MM-TT.HH:MM:SS
    bedeutet dann
    JJJJ Jahre
    MM Monate
    TT Tage
    HH Stunden
    MM Minuten
    SS Sekunden
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2005
    Beiträge
    14
    guten morgen, ich hoffe ich störe nicht, aber ich da nochmal ein kleines problemchen

    also das mit dem update opdauer
    und dann set opdauer = nahtzeit - schnittzeit

    hat wunderbar funktioniert

    Ergebnis: z.B.: 1900-01-01 01:15:00.000

    Jetzt möchte ich , wenn es möglich ist

    1900-01-01 eliminieren , so dass nur noch die zeit zu sehen ist

    gibt es da vielleicht eine möglichkeit

    Vielen dank!!!!

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Corraggiouno
    guten morgen, ich hoffe ich störe nicht, aber ich da nochmal ein kleines problemchen

    also das mit dem update opdauer
    und dann set opdauer = nahtzeit - schnittzeit

    hat wunderbar funktioniert

    Ergebnis: z.B.: 1900-01-01 01:15:00.000

    Jetzt möchte ich , wenn es möglich ist

    1900-01-01 eliminieren , so dass nur noch die zeit zu sehen ist

    gibt es da vielleicht eine möglichkeit

    Vielen dank!!!!
    Ich gehe davon aus, dass Dein Ausgabe-Feld ein Zeitmarken-Feld ist.
    Mit der Funktion TIME(ZeitMarke) kann nur der Zeit-Anteil aus der Zeitmarke sichtbar gemacht werden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    14
    jetzt weiss ich zumindest welche option ich verwenden kann ,

    was ich nicht weiss ist , wie bette ich die funktion "time" in meine sql-anweisung ein

    ich bin ein wirklicher anfänger was mssql betrifft , sorry

    also wenn ich folgenden code habe

    update opdauer
    set opdauer=nahtzeit-schnittzeit

    wo bette ich hier die funktion time ein

    Vielen dank im voraus

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ob MSSQL das so unterstützt weiss ich nicht, aber TIME(nahzeit-schnittzeit) müsste funktionieren.
    Wenn dein Feld OPDAUER allerdings nicht als TIME-Feld sondern als TIMESTAMP definiert ist, bringt das so nichts.
    Ggf. musst du dann "Select TIME(opdauer) ..." verwenden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Apr 2005
    Beiträge
    14
    sorry, muss nochmal nachfragen

    also meinen nahtzeit=datetime/die schnittzeit=datetime

    und die opdauer spalte ist timestamp

    habe folgenden code verwendet :

    select time( opdauer)
    set opdauer=nahtzeit-schnittzeit

    .......fehlermeldung----> 'time' is not a recognized function name

    was soll ich tun

    mit sicherheit stimmt die syntax nicht von mir

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dann ist die TIME-Funktion nicht bekannt.
    Für MSSQL-Server heisst die Funktion DATEPART (übrigens die gleiche wie in VB), weiteres siehe Onlinehilfe zu MSSQL-Server.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Apr 2005
    Beiträge
    14
    vielen vielen dank

    ich habe folgende syntax verwendet

    update datepart (opdauer)
    set opdauer=nahtzeit - schnittzeit

    dann kam

    Line 1: incorrect syntax near '('.

    ich weiss nicht wo ich das datepart einbetten soll

    Hättet ihr vielleicht nochmal einen tipp für mich , sorry

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nochmal:
    Solange dein Feld opdauer ein TIMESTAMP-Feld ist, wird dieses immer auch ein Datum (nähmlich den 1.1.1900) enthalten !!!

    Ansonsten siehe auch mal in die Hilfe des SQL-Servers !!!!!

    Hier mal eine Beispiel für DATEPART:

    DATEPART
    Gibt eine ganze Zahl zurück, die den angegebenen Teil für datepart des angegebenen Datums darstellt.

    Syntax
    DATEPART ( datepart , date )

    Argumente
    datepart

    Der Parameter, der angibt, welche Datumseinheit zurückgegeben werden soll. Die Tabelle listet die Datumseinheiten und Abkürzungen auf, die von Microsoft® SQL Server™ erkannt werden.

    Datumseinheit Abkürzungen
    year yy, yyyy
    quarter qq, q
    month mm, m
    dayofyear dy, y
    day dd, d
    week wk, ww
    weekday dw
    hour hh
    minute mi, n
    second ss, s
    millisecond ms


    Die Datumseinheit week (wk, ww) spiegelt an SET DATEFIRST vorgenommene Änderungen wider. Der 1. Januar eines beliebigen Jahres definiert die Anfangszahl für die Datumseinheit week. Beispiel: DATEPART(wk, 'Jan 1, xxxx') = 1, wobei xxxx für ein beliebiges Jahr steht.

    Die Datumseinheit weekday (dw) gibt eine Zahl zurück, die dem Wochentag entspricht, z. B.: Sonntag = 1, Samstag = 7. Die von der Datumseinheit weekday erzeugte Zahl ist abhängig vom durch SET DATEFIRST festgelegten Wert, der den ersten Tag der Woche festlegt.

    date

    Ein Ausdruck, der einen datetime- oder smalldatetime-Wert oder eine Zeichenfolge in einem Datumsformat zurückgibt. Verwenden Sie den datetime-Datentyp nur für Datumsangaben nach dem 1. Januar 1753. Speichern Sie davor liegende Datumsangaben als Zeichendaten. datetime-Werte werden immer in Anführungszeichen eingeschlossen. Da smalldatetime nur eine Genauigkeit auf die Minute aufweist, sind Sekunden und Millisekunden immer gleich Null, wenn ein smalldatetime-Wert verwendet wird.

    Wenn Sie nur die letzten beiden Ziffern der Jahreszahl angeben, liegen Werte, die kleiner oder gleich den letzten beiden Ziffern des Wertes der Konfigurationsoption two digit year cutoff sind, im selben Jahrhundert wie das Umstellungsjahr. Werte, die größer als die letzten beiden Ziffern des Wertes dieser Option sind, liegen in dem Jahrhundert, das dem Jahrhundert des Umstellungsjahres vorausgeht. Wenn two digit year cutoff z. B. auf 2049 (Standardeinstellung) eingestellt ist, wird das Jahr 49 als 2049 und das Jahr 50 als 1950 interpretiert. Um die Zweideutigkeit von Datumsangaben zu vermeiden, sollten Sie vierstellige Jahresangaben verwenden.

    Weitere Informationen zum Angeben von Zeitwerten finden Sie unter Zeitformate. Weitere Informationen zum Angeben von Datumsangaben finden Sie unter „datetime“ und „smalldatetime“.

    Rückgabetypen
    int

    Hinweise
    Die Funktionen DAY, MONTH und YEAR entsprechen DATEPART(dd, date), DATEPART(mm, date) und DATEPART(yy, date).

    Beispiele
    Die GETDATE-Funktion gibt das aktuelle Datum zurück; allerdings wird für Vergleiche nicht immer das vollständige Datum benötigt (oft wird nur ein Teil des Datums verglichen). Dieses Beispiel zeigt die Ausgabe von GETDATE sowie DATEPART.

    SELECT GETDATE() AS 'Current Date'
    GO

    Im Folgenden wird das Resultset aufgeführt:

    Current Date
    ---------------------------
    Feb 18 1998 11:46PM

    SELECT DATEPART(month, GETDATE()) AS 'Month Number'
    GO

    Im Folgenden wird das Resultset aufgeführt:

    Month Number
    ------------
    2

    Angenommen, das aktuelle Datum ist der 29. Mai:

    SELECT DATEPART(month, GETDATE())
    GO

    Im Folgenden wird das Resultset aufgeführt:

    -----------
    5

    (1 row(s) affected)

    In diesem Beispiel wird das Datum als Zahl angegeben. Beachten Sie, dass SQL Server den Wert 0 als 1. Januar 1900 interpretiert.

    SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)

    Im Folgenden wird das Resultset aufgeführt:

    ----- ------ ------
    1 1 1900


    Siehe auch

    CAST und CONVERT

    Datentypen

    Datums- und Zeitfunktionen

    ©1988-2000 Microsoft Corporation. Alle Rechte vorbehalten.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SNDDST ohne SMTP-Job aber mit Domino Server?
    By rebe in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 23-01-07, 16:06
  2. AS/400 und SQL Server 2000
    By rcauchy in forum NEWSboard Windows
    Antworten: 9
    Letzter Beitrag: 06-06-05, 10:24
  3. mssql server 2000 - tabelle updaten
    By Corraggiouno in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 31-05-05, 08:46
  4. AS/400 Zugriff via Linked Server unter SQL Server 2000
    By epsih2 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-11-04, 10:06
  5. AS 400 e und Win 2000 Server
    By Xenox in forum NEWSboard Windows
    Antworten: 2
    Letzter Beitrag: 29-01-02, 17:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •