Jump to content

Integer zu Datetime / Date konvertieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Guten Morgen zusammen,

 

ich stehe hier leider vor einem kleinen Problem, da ich nicht der fitteste in sachen SQL bin.

Ich  soll eine Datenbankabfrage erstellen welche mir Zeiten aus einer bestehenden Datenbank ausliest....

 

Soweit sogut allerdings sind die Zeiten als Integer abgelegt und nicht der komplette Zeitstempel sondern nur der teil mit der Uhrzeit.

z.b. 26160, das sollte 7:16 Uhr sein. Anstelle des Integer wertes hätte ich gerne die  angabe als "date".

 

ich bin wiefolgt vorgegangen um den Integer erstmals als datetime zu konvertieren:

 

SELECT cast (Datenbank.tagesauswertung.arbeitszeit_anfang as datetime)

 

an sich funktioniert der cast  aber alle Werte sind jetzt  aus dem Jahr 1964  und  es ist  genau 00:00:00 Uhr.

 

1964-01-26 00:00:00.000

 

Ich bitte um eure Hilfe. muss ich den integer wert erst erweitern ? als date kann ich leider nicht konvertieren da ich direkt abgewimmelt werde mit

"Der Typ date ist kein definierter Systemtyp."

 

Wenn Ihr irgendwelche Ideen oder Anregungen  bzw. Links  habt, immer her damit :)

 

Viele Grüße

-Jogurt

 

 

 

Link zu diesem Kommentar
  • 2 Wochen später...

Hi Jogurt

 

Wenn du "SELECT cast (Datenbank.tagesauswertung.arbeitszeit_anfang as datetime)" ausführst, dann wird Cast die Tage ab dem 3.01.1900 als Datum ausgeben.

(Excel macht das auch so ähnlich: Gibt mal in Excel 26160 in eine Zelle ein und dann als Datum formatieren. Raus kommt '15.08.1971' )

Wenn du CAST(26160 -2 as datetime) machst, erhälst du das selbe Datum. -2 da unterschiedliche Basis-Daten verwendet werden.

 

Zum Problem:

26160 sind die Sekunden ab Mitternacht.

 

 Willst du den Dezimalwert, musst du die Zahl nur durch  3600 teilen, dann hast du 7,2666.

 

Wenn du wirklich die reinen Uhrzeiten haben willst, dann musst du so'n Quatsch machen:

 

SELECT CONVERT(varchar(8), dateadd(minute,Datenbank.tagesauswertung.arbeitszeit_anfang/60,'1900-01-01'),8)

 

Das Ergebnis ist jedoch ein String(varchar)

 

Gruß

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...