helmuthelmut2000
Goto Top

Aktuelles Datum und Uhrzeit mit php in MSSQL DB schreiben

Hallo,

Ich moechte das das Aktuelle Datum und Uhrzeit bei einem update von einem
php Formular in der MSSQL DB geschrieben wird.

Das DB Feld habe hat das Format date und heist aenderungsdatum.

Wie muss ich das im PHP Formular schreiben?

$sql = "UPDATE Ergebnisse SET aenderungsdatum='".$_POST['????????']."',

Danke.

Gruss
Helmut

Content-ID: 171215

Url: https://administrator.de/contentid/171215

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Luckyguy
Luckyguy 09.08.2011 um 18:56:16 Uhr
Goto Top
willst du die uhrzeit formatiert mitgeben oder nur im timestamp ich würde timestamp vorschlagen mit der standardfunktion php time() kannst es bestimmen.
Xaero1982
Xaero1982 09.08.2011 um 19:10:30 Uhr
Goto Top
Edit: Huch ist ja MSSQL, wie Arano sagte ... also siehe bei ihm face-smile
Arano
Arano 09.08.2011 um 19:13:56 Uhr
Goto Top
Hi,

in MySQL würde ich einfach NOW() im Query verwenden.
Dar dies aber MSSQL ist musste ich kurz suchen um das passende (?) äquivalent zu finden: MSDN - SQL - GETDATE()

Hoffe das hilft face-smile


~Arano
helmuthelmut2000
helmuthelmut2000 12.08.2011 um 01:32:37 Uhr
Goto Top
Hallo,

Ich hab jetzt mal folgendes versucht:

aenderungsdatum=CONVERT (varchar(8), getdate(),4)

Warum schreibt es mir da immer nur das Datum und die Zeit ist immer?

00:00:00
helmuthelmut2000
helmuthelmut2000 12.08.2011 um 21:18:04 Uhr
Goto Top
Hallo,

Kannst du mir das etwas besser erklären.
Wie macht man das mit time() ?

Danke
Arano
Arano 12.08.2011 um 21:52:18 Uhr
Goto Top
Nabend,

mit MSSQL habe ich noch nicht gearbeitet, kenne es daher auch nicht.
Aber hier nach: MSDN - SQL - CONVERT() wird durch die Angabe von varchar(8) in deinem Query, das Datetime in eine Zeichenkette konvertiert die nur 8 Zeichen lang ist - ergo muss da etwas fehlen !

2. (Ich meine darauf wurde schon mal hingewiesen ?) Dein Feld "aenderungsdatum" ist vom Type "date", kann dieses auch zusätzlich einen Zeitwert erfassen oder müsste es dafür auf "datetime" geändert werden !?

und 3. bin ich mir nicht sicher ob es möglich ist, dem Dateityp "date" zu sagen wie er das Datum zu speichern hat, das geschieht meines Verständnisses immer nach internen Vorgaben! Daher könntest du auch den dritten Parameter in deiner CONVERT()-Funktion beim Speichervorgang weglassen.

Was geschieht denn wenn du es so versuchst?
<?php
// zum speichern
$sql = "UPDATE Ergebnisse SET aenderungsdatum=GETDATE()",  

// beim auslesen
$sql = "SELECT CONVERT(varchar, aenderungsdatum, 4) AS formatiertesdatum FROM Ergebnisse",  
// kann fehlerhaft sein ! (habe halt nur MySQL-Kenntnisse)
?>

Hilfreich für dich kann es auch sein, sofern möglich, die Abfragen testweise in einer Konsole auszuführen bzw. von dieser aus zu überprüfen was den nun tatsächlich in die Datenbank gespeichert wird.


~Arano
Biber
Biber 12.08.2011 um 22:01:24 Uhr
Goto Top
Moin helmuthelmut2000,
Zitat von @helmuthelmut2000:
Hallo,

Ich hab jetzt mal folgendes versucht:

aenderungsdatum=CONVERT (varchar(8), getdate(),4)

Warum schreibt es mir da immer nur das Datum und die Zeit ist immer?

00:00:00
Was soll der Ärmete denn anderes tun bei deinen Vorgaben?
  • in einen VarChar(8), der einen Datumswert aufnehmen soll, passen doch nur "dd.mm.yy", es sei denn, du stellst Stunden, Minuten und Sekunden in die zweite Reihe.
  • und der style 4, den du explizit verlangst, gibt passend dazu das Format "dd.mm.yy" an. So what? -> works as designed..

Wenn du die Sekunden haben willst, dann verwende den style 120 plus eine angemessene varchar-Länge [yyyy-mm-dd hh:mi:ss(24h)]

' '

Grüße
Biber
helmuthelmut2000
helmuthelmut2000 12.08.2011 um 22:37:00 Uhr
Goto Top
Hallo Biber,

mit
CONVERT (varchar(8), getdate(),4)
Wird mir das richtige Datum mit der Uhrzeit 00:00 geschrieben.
mit
CONVERT (varchar(8), getdate(),14)
Wird mir das Datum 01.01.1900 und die richtige Uhrzeit geschrieben.

Wie hänge ich das zusammen?
Muss ich 2 Datenbankfelder machen und diese dann beim ausgeben selectiren zusammen ausgeben?
oder gibts da ein (varchar(??), getdate(),???)
wo beides zusammen gespeichert wird?

Danke.
helmuthelmut2000
helmuthelmut2000 12.08.2011 um 22:49:25 Uhr
Goto Top
Hallo,

OK

jetzt hats geklappt.

Danke.
Biber
Biber 12.08.2011 um 22:50:52 Uhr
Goto Top
Moin helmuthelmut2000,

wie Arano geschrieben hat und auch ich:

  • du kannst mit einem GETDATE()-Aufruf ein DATE-Feld befüllen oder ein Varchar(8)-Feld -> das Ergebnis wird "Datum" sein mit Std/Min/Sek auf "0" gesetzt.
  • oder du kannst mit einem GetDate()-Aufruf in ein Datetime-Feld-Schreiben. Dann hast du auch hh:mm:ss plusMillisekunden und musst es in der Anzeige "nachformatieren"

Was ich geschrieben habe ist:
  • ja, es gibt eine "Zeig mit Datum+Zeitformatierung", nämlich den style 120 (oder ohne Jahrhundertangaben style 20). der beginnt allerdings mit der ISO-Datumsdarstellung "[yy]yy-mm-dd" , die du wahrscheinlich nich möchtest.
  • akzeptabler Kompromiss - brate dir ein Varchar(15)-Feld zusammen aus Datum-als-varchar(8) wie oben plus ein Leerzeichen plus Zeit als Varchar(6). Siehe meinen Kommentar zuvor.

Grüße
Biber
helmuthelmut2000
helmuthelmut2000 12.08.2011 um 22:55:16 Uhr
Goto Top
Mit

(varchar(20), getdate(),113)

sieht das ganz gut aus.
Das geht doch, oder würdest du das nicht nehmen?
Da hab ich Das Datum und die Richtige Uhrzeit.

Gruß
Helmut
Biber
Biber 12.08.2011 um 23:06:25 Uhr
Goto Top
Moin Helmuthelmut2000,

wenn bei dir in diesem Format die im deutschen Sprachraum üblichen Punkte und Leerzeichen an den "richtigen" Stellen sind, dann passt es schon.
Wie erscheint denn eine Ausgabe in diesem Format hier, heute und jetzt?

Grüße
Biber
helmuthelmut2000
helmuthelmut2000 13.08.2011 um 01:20:44 Uhr
Goto Top
Hallo biber,

Das schaut jetzt so aus:

13.08.2011 01:17:31