-
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.
-
mein feld opdauer ist aber kein timestamp mehr sondern datetime
wenn ich die die schnittzeit von der nahtzeit abziehe dann funktioniert das auch so weit ganz gut,
nur es wird zusätzlich noch das datum dazu ausgegeben ......
da muss es doch ne funktion geben , wo ich das datum einfach abschneiden kann so das ich als ergebnis NUR die dauer (z.b. 02:50:00) habe
die getdate- funktion hilft mir in diesem fall nicht wirklich weiter alles was ich benötige ist die zeit in hh:mm:ss
Meine syntax :
update opdauer
set opdauer=nahtzeit-schnittzeit
gibt es dafür keine explizite lösung??
vielen dank!!
-
 Zitat von Corraggiouno
mein feld opdauer ist aber kein timestamp mehr sondern datetime
wenn ich die die schnittzeit von der nahtzeit abziehe dann funktioniert das auch so weit ganz gut,
nur es wird zusätzlich noch das datum dazu ausgegeben ......
da muss es doch ne funktion geben , wo ich das datum einfach abschneiden kann so das ich als ergebnis NUR die dauer (z.b. 02:50:00) habe
die getdate- funktion hilft mir in diesem fall nicht wirklich weiter alles was ich benötige ist die zeit in hh:mm:ss
Meine syntax :
update opdauer
set opdauer=nahtzeit-schnittzeit
gibt es dafür keine explizite lösung??
vielen dank!!
Wenn Dein Feld ein TimeStamp oder, wie Du es ausdrückst ein DateTime Format hat, muss auch Datum und Zeit drin stehen!
Was Du siehst ist nicht das, was tatsächlich in einem Zeit-Feld steht, sondern lediglich eine Aufbereitung. Du kannst über Funktionen DATE(), TIME() nur den Datums- oder Zeit-Anteil ermitteln und anzeigen, wenn das so erforderlich ist.
Vermutlich ist nicht nur die OpDauer eine Zeitmarke sondern auch die anderen beiden Felder.
Select Time(OpDauer) from MyFile
Birgitta
-
sorry , die function "time" gibt es nicht in sql......
sorry , wenn ich nochmal die syntax verwende z.b.
update opdauer
set opdauer=nahtzeit-schnittzeit
folgendes ergebnis: 01.01.1900 01:35:00
ok gibt es vielleicht ne funktion wo ich das
(01.01.1900) abschneiden kann ?????
-
NOCHMAL !!!
Die Funktion heisst beim SQL-Server DATEPART.
Entweder du definierst deine Variable als Typ TIME (was bei einer Dauer über 24 Stunden ein Problem wird) oder du machst einen
select datepart(hh, opdauer), datepart(mi, opdauer), datepart(ss, opdauer) ....
Alternativ könnte auch
select substr(cast(opdauer as char(20)), 10, 8) ...
funktionieren.
-
guten morgen,
das mit der select anweisung und der funktion datepart habe ich jetzt begriffen.....
aber was kommt jetzt noch hinzu.....
select datepart(hh,opdauer), datepart(mi,opdauer)
folgt jetzt auf die select anweisung noch ein update oder wie muss ich jetzt weiter
verfahren??
Vielen dank im voraus!!
-
Ich weiß ja nicht was du mit "opdauer" bezweckst.
Aber nochmal:
Dein Feld "opdauer" ist als Datetime definiert, wird also IMMER ein Datum enthalten.
Mit der Funktion Datepart kannst du nun den Teil den du brauchst beim Select extrahieren.
Speichern kannst du nur die Zeit NICHT solange du das Feld opdauer nicht auch als Time-Feld umdefinierst !!!
Mit deinem Select w.o. erhältst du nun die Dauer in Stunden und Miniuten.
Wozu dann noch einen Update ?!
-
guten morgen,
bevor ich aber meine select anweisung und die datepart function deklariere (wie oben) muss ich doch zuerst hinschreiben wie sich die opdauer überhaupt zusammen setzt also
muss ich doch zuerst die nahtzeit - schnittzeit nehmen und dann kann ich doch erst die datepart function schreiben
oder liege ich da falsch??
Vielen dank!!!
-
Ich glaube wir reden da aneinander vorbei.
Ich nehme mal an, dass dein Feld opdauer permanent in der Datenbank gespeichert werden soll. Dies erreichst du mit der o.a. Update-Anweisung.
Für eine spätere Auswertung der opdauer kannst du dann im Select die Datepart-Funktion verwenden um nur den Zeitanteil herauszubekommen.
-
ok , das habe ich verstanden ,
jetzt hätte ich noch ne ähnliche frage,
kann ich mit dieser sql anweisung
- wenn ich folgende zeit habe (01.01.1900 00:50:00) -
das datum vorne abschneiden
ich verwende folgende syntax
!!die zweite opdauer ist der spaltenname!!
update opdauer
set opdauer = cdate (left$(opdauer,6))
, aber leider endet diese in einem fehler '' left$ is a recognized function name''
habt ihr vielleicht eine kleinen tipp, wie ich es besser machen kann ?
Vielen dank!!!
-
Die Funktion heißt eigentlich SUBSTR, aber was willst du damit erreichen ?
opdauer ist doch ein datetime-Feld. Es wird also automatisch wieder der 1.1.1900 davorgesetzt !!!!!!!!!!!
Similar Threads
-
By rebe in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 23-01-07, 16:06
-
By rcauchy in forum NEWSboard Windows
Antworten: 9
Letzter Beitrag: 06-06-05, 10:24
-
By Corraggiouno in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 31-05-05, 08:46
-
By epsih2 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 29-11-04, 10:06
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks