Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Beim erstellen einer Tabelle Datum schreiben

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

25.10.2011, aktualisiert 18.10.2012, 5501 Aufrufe, 12 Kommentare

Hallo,

Ich hab da ein Problem und vielleicht kann mir da einer Helfen.

Ich erstelle mit einem PHP Formular in einer mssql DB eine Tabelle.
Und beim erstellen sollte gleich das Datum und Uhrzeit mit eingetragen werden.
Wie macht man das?

Die Tabelle erstelle ich so:

01.
$sql="CREATE TABLE Ergebnisse 
02.
     (Schluessel INTEGER IDENTITY (1,1) NOT NULL, 
03.
      aktion nvarchar(255) NULL, 
04.
      timestamp timestamp NULL, 
05.
      PRIMARY KEY (Schluessel) 
06.
      )"; 
07.
      mssql_query($sql);
Die Spalte

timestamp timestamp NULL,

sollte gleich das aktuelle Datum und Uhrzeit haben.

Danke.
Mitglied: surrogat2000
25.10.2011 um 23:34 Uhr
Ich verstehe deine Frage nicht ganz:
Du stellst eine Tabell mit folgendem Aufbau her: Schluessel | aktion | timestamp
Wo willst du da das aktuelle Datum haben? Du hast ja noch keinen Datensatz drin. Falls du einen Defaultwert setzen möchtest, dann häng an die timestamp Zeile einfach DEFAULT CURRENT_TIMESTAMP oder DEFAULT NOW() dran. Welches von beiden weiß ich grad aus dem Kopf nicht und meine Testumgebung ist im Büro.

LG.
Bitte warten ..
Mitglied: Logan000
26.10.2011 um 08:09 Uhr
Moin Moin

Oder du schiebst gleich ein INSERT hinterher und legst einen neuen Datensatz an.

Gruß L.
Bitte warten ..
Mitglied: nxclass
26.10.2011 um 11:55 Uhr
01.
`timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP /* ggf noch: ON UPDATE CURRENT_TIMESTAMP */
.. ist richtig. http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Bitte warten ..
Mitglied: Biber
26.10.2011 um 13:47 Uhr
Moin helmuthelmut2000,

ergänzend zu den Vorkommentaren, insbesondere zu nxclass', noch die Anmerkung:

  • ein timestamp-Feld in einer Tabelle timestamp zu nennen -> in mehrfacher Hinsicht suboptimal
  • nenn es "AngelegtAm", wenn du den Anlage-Timestamp mitschleppen willst
  • nenn es "AktualisiertAm", wenn du den Zuletzt-Geändert-Timestamp mitschleppen willst (und dann inkl. der ON UPDATE-Clause oben)
  • lege zwei Felder an, wenn du "AngelegtAm" und "AktualisiertAm"-Timestamps mitschleppen willst

Grüße
Biber
Bitte warten ..
Mitglied: helmuthelmut2000
26.10.2011 um 15:25 Uhr
Hallo,

Wenn ich das so:

`timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP schreibe dann kommt
keine Fehlermeldung.
Es wird die Tabelle mit 3 Spalten Schluessel, aktion, timestamp angelegt. Aber überall ist der Wert NULL.

Kann das sein das `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP für Mysql und nicht für MSSQL ist?
Bitte warten ..
Mitglied: nxclass
26.10.2011 um 15:56 Uhr
mssql_query($sql);
... das sollte eigentlich Standard SQL sein.

01.
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
den wert bei `timestamp` weglassen beim INSERT oder:
01.
... = DEFAULT
jedenfalls nicht ... = NULL
Bitte warten ..
Mitglied: helmuthelmut2000
26.10.2011 um 16:11 Uhr
Geht nicht.

Ich hab jetzt mal timestamp geändert in aktiondatum.

01.
$sql="CREATE TABLE [".$dsatz['Schluessel']."]  
02.
     (Schluessel INTEGER IDENTITY (1, 1) NOT NULL, 
03.
      aktion nvarchar(255) NULL, 
04.
      aktiondatum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
05.
      PRIMARY KEY (Schluessel) 
06.
      )"; 
07.
      mssql_query($sql);
Dann bekomme ich die Fehlermeldung und es wird keine Tabelle angelegt:

Warning: mssql_query() [function.mssql-query]: message: Für Spalten vom timestamp-Datentyp können keine Standardwerte erstellt werden. '22122'-Tabelle, 'aktiondatum'-Spalte. (severity 16) in C:\Apache2\htdocs.......

Dann ändere ich die Zeile:

01.
aktiondatum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, in  
02.
aktiondatum datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
Dann wird die Tabelle angelegt aber mit Inhalt NULL.

EDIT masterG 23.11.2011 14:55: Text formatiert
Bitte warten ..
Mitglied: Arano
26.10.2011 um 19:52 Uhr
Hm...

Ich hatte heute morgen schon etwas dazu gesucht, es dann aber doch noch nicht Posten wollen (05:35Uhr und vom Handy aus).

Es geht hier doch um MSSQL und nicht um MySQL, sollte das nicht ein Unterschied sein ?
Zum Problem steht im MSDN:
Quelle: MSDN - CREATE TABLE (Transact-SQL)
DEFAULT
Gibt den Wert an, der für die Spalte bereitgestellt wird, wenn kein Wert explizit angegeben wurde. DEFAULT-Definitionen können auf alle Spalten angewendet werden, mit Ausnahme der als timestamp definierten Spalten sowie von Spalten mit der IDENTITY-Eigenschaft.
[...]

RTFM
Da sollte man halt zuerst nachschauen


~Arano
Bitte warten ..
Mitglied: Biber
26.10.2011, aktualisiert 18.10.2012
Moin Helmuthelmut,

ergänzend zu Arano:
ich hatte auch überlesen, das jemand dir eine MSSQL-Datenbank angedreht hat.

Die Redmonder haben in der Tat einen Datentyp "timestamp" angelegt, um DAUs wie uns zu leimen.
Dieser Typ "timestamp" ist nur ein Synonym für den Binär-Typ "RowVersion", hatten wir neulich schon mal hier.

--> Also defintiv: nimm Typ "datetime" für deine Zwecke.
Und nein, es wird definitiv nicht NULL sein, wenn Datensätze eingefügt werden.

Grüße
Biber
Bitte warten ..
Mitglied: helmuthelmut2000
29.10.2011 um 12:45 Uhr
Hallo Biber,

Ich hab das jetzt so gelöst.

Ich erstelle eine Tabelle wie oben beschrieben mit:

$sql="CREATE TABLE .....
mit dem Typ datetime.

und dann schreibe ich mit:

$sql="INSERT INTO ..

die Daten rein. Das geht auch.

Mal noch ne Frage.
Ich mach das so um einen Verlauf von einer anderen Tabelle zum Darstellen.
Das heist.
Ich habe eine Tabelle und da sind Einträge, und zu jedem Eintrag mach ich jetzt noch eine Tabelle und dort
schreibe ich dann rein was sich wann verändert hat. Das gibt dann aber sehr viele Tabellen.

Gibt es da eine andere Möglichkeit?

Noch was.
Warum schreibst Du man hat mir eine MSSQL-Datenbank angedreht.
Ist die nicht gut?

Gruß
Helmut
Bitte warten ..
Mitglied: Biber
30.10.2011 um 02:28 Uhr
Moin helmuthelmut2000,

Zitat von helmuthelmut2000:
Mal noch ne Frage.
Ich mach das so um einen Verlauf von einer anderen Tabelle zum Darstellen.
Das heist.
Ich habe eine Tabelle und da sind Einträge, und zu jedem Eintrag mach ich jetzt noch eine Tabelle und dort
schreibe ich dann rein was sich wann verändert hat. Das gibt dann aber sehr viele Tabellen.
Gibt es da eine andere Möglichkeit?

Ja nee...is' klar.

Da geb ich dir recht - wenn es SO ausufert, dann ist es offensichtlich nicht der richtige Weg.
Ich kenn mich ja auch mit Datenbankkrams nicht so aus, aber mit laienhaftem Halbwissen würde ich behaupten
  • definitiv sind keine "ErstelltAm"/"GeändertAm"-Felder in ZUSÄTZLICHEN Tabellen nötig.
  • ein "ErstelltAm"-Feld in einer Tabelle kannst du in jeder ver###ten Datenbank dieser Galaxie über einen Defaultwert setzen - auch in MSSQL
  • ein "GeändertAm"-Feld in einer Tabelle kannst du fast in jeder Datenbank dieser Galaxie nur via eigene Programmlogik neu setzen oder aber über einen Trigger.

Ist aber -wiederum in dieser Galaxie - alles schon mehrfach erfunden worden, möchte ich daher ungern nochmal ganz neu erfinden,
Aber eine Suche nach "Trigger on update examples" sollte schon Treffer liefern.

Noch was.
Warum schreibst Du man hat mir eine MSSQL-Datenbank angedreht.
Ist die nicht gut?
Na ja... sagen wir so: etwas bieder kommt die schon daher.

Ich arbeite gern und viel mit Oracle und DB2-Datenbankblechen, gelegentlich auch mit mySQL - bei allen drei System kann ich nachvollziehen, was wohl so die treibenden Gedanken bei der Entwicklung der jeweiligen Architektur, des Designs, der Implementierung gewesen sein könnten.
Ich verstehe (oder glaube zu verstehen), was die Intention, die Philosophie, der Charme der jeweiligen Variante ist.
Und ich kann stellenweise den Spass der Coder bei der einen oder anderen Sonderlocke nachvollziehen - speziell dem ständigen Wettlauf um innovative Features und güldene Knöpfchen zwischen IBMs DB2 und Oracle könnte ich noch weitere Jahrzehnte lang amüsiert und interessiert zusehen.

MSSQL dagegen ist zwar benutzbar, bedienbar und durchaus robust.
Aber hat den Charme eines VW Polo oder eines Opel Kadett Baujahr 1986 in der Ausführungsvariante ohne Radio, ohne Uhr im Armaturenbrett und Seitenspiegel nur gegen Aufpreis.
Nichts für Vergnügungstouren - aber wenn du damit nur täglich zur Arbeit fahren musst und wieder zurück - dafür mag es reichen.

Hoffe, das Beispiel war verständlich.
Gruß
Helmut

Grüße zurück
Biber
Bitte warten ..
Mitglied: helmuthelmut2000
30.10.2011 um 10:50 Uhr
Hallo,

Ich hab mir schon mal vor längerer Zeit vorgenommen meine PHP-Seiten von mssql auf mysql umzustellen.
Aber ich hatte damals Probleme mit der Datenübernahme von mssql auf mysql. Ich hab mich dann aber auch nicht
mehr Richtig darum gekümmert. Ich hab da eine Tabelle mit ca.2500 Datensätzen in meiner DB und die möchte ich nicht
neu eingeben müssen.
Aber vielleicht Pack ich das mal wieder an.

Danke.

Gruß
Helmut
Bitte warten ..
Ähnliche Inhalte
JavaScript
Zeit und Datum in Datei schreiben
Frage von MarcysJavaScript2 Kommentare

Hallo, mit Node-Red habe ich den Temperatursensor DHT22 ans Laufen bekommen. Ich habe zwei Node-Funktionen erstellt, die mir die ...

PHP

PHP Datenbankabfrage in Tabelle schreiben

gelöst Frage von newit1PHP4 Kommentare

Hallo, mit folgendem Code ziehe ich die Daten aus der Datenbank Leider wird mir die Ausgabe nur schlicht untereinander ...

Batch & Shell

Datei mit Datum im Namen erstellen

gelöst Frage von pbelclBatch & Shell6 Kommentare

Ich habe mir ein kleines Batch geschrieben, das mir eine Date erstellt, die im Namen das Datum und die ...

Microsoft Office

PDF auslesen und in Excel Tabelle schreiben

Frage von WisssbegierigMicrosoft Office3 Kommentare

Ich möchte in folgendem PDF (hier Beispiel als Bilddatei) die orange umkreisten Felder auslesen und in Excel in je ...

Neue Wissensbeiträge
Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 1 TagSonstige Systeme4 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 1 TagDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 1 TagWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 1 TagHumor (lol)2 Kommentare

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL Monitoring Tool - Quick and dirty?
Frage von george44DSL, VDSL15 Kommentare

Liebe Gemeinde, ich suche ein einfaches und vor allem schnell zu installierendes Monitoring-Tool zur kontinuierlichen Dokumentation (nur) der Internetanbindung. ...

Netzwerkgrundlagen
Werksreset HP 1920S-24G
gelöst Frage von HenereNetzwerkgrundlagen14 Kommentare

Servus zusammen, ich habe mir 2 neue Switche zugelegt, doch ich komme damit nicht ganz klar. Waren Vorführgeräte zum ...

LAN, WAN, Wireless
Gäste-WLAN durch DD-WRT AP nach einem MikroTik Routerboard
Frage von NukolarLAN, WAN, Wireless14 Kommentare

Hallo, wie der Titel schon sagt möchte ich gerne ein Gäste-WLAN innerhalb eines bestehenden LANs einrichten. Dass die Gäste ...

Exchange Server
Outlook findet Postfach nicht
Frage von MaximaxExchange Server11 Kommentare

Hallo, und zwar haben wir auf der Arbeit ein kleines (großes) Exchange 2016 Problem. Exchange meldete gestern, dass die ...