Microsoft Access DateTime Default Nun per SQL
Schreibe ich eine Reihe von Skripten zu aktualisieren zahlreichen Access-Tabellen. Ich würde gerne eine Spalte hinzufügen, jeder hat ein Feld namens "date_created" das ist ein timestamp, Wann der Datensatz erstellt wird. Tun Sie dies durch die Tabellenansicht ist einfach, einfach den DefaultValue = jetzt(). Allerdings, wie würde ich dies in sql?
Dies ist mein Aktueller Versuch für Tabellen, die bereits über die Spalte. Dieses Beispiel verwendet "tblLogs".
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT now()
Vielen Dank für Ihre Hilfe!
Update - Wäre es eine Möglichkeit dies in VBA?
Update 2 Getestet, alle Antworten und die folgenden durch onedaywhen ist die kürzeste und Genaueste
CurrentProject.Connection.Execute _
"ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
Now() ist eine dumme Funktion zu verwenden, wenn Sie möchten das DATUM. Was Sie wirklich wollen zu setzen, ist der Standardwert auf Datum().
Sie sagen: "DateTime...timestamp, Wann der Datensatz erstellt," für die die JETZT() Funktion am besten geeignet ist.
OK, es wäre genauer zu koordinieren, den Namen des Feldes und die Daten eingegeben, aber nennen es "dumm" ist unhöflich. Konstruktives feedback sollte nicht herablassend noch enthalten keine Beleidigungen.
Ob eine Spalte, die Namen mit einem Präfix, der date_ impliziert, dass die kleinste Körnchen werden eines Tages (in anderen Worten, keine Zeit-element), ist fraglich, z.B. ACE/Jet hat aber eine zeitliche Daten Typ DATETIME für die 'DATE' ist ein synonym. Sie müssten eine Einschränkung (oder Validierung-Regel), um sicherzustellen, DATETIME-Werte, die nicht die Zeit haben, die Elemente z.B. EINSCHRÄNKUNG Datum_erstellt__keine_Zeit_element ÜBERPRÜFEN(date_created = DATEADD ("D", DATEDIFF('D', #1990-01-01 00:00:00#, date_created), #1990-01-01 00:00:00#);
Sie sagen: "DateTime...timestamp, Wann der Datensatz erstellt," für die die JETZT() Funktion am besten geeignet ist.
OK, es wäre genauer zu koordinieren, den Namen des Feldes und die Daten eingegeben, aber nennen es "dumm" ist unhöflich. Konstruktives feedback sollte nicht herablassend noch enthalten keine Beleidigungen.
Ob eine Spalte, die Namen mit einem Präfix, der date_ impliziert, dass die kleinste Körnchen werden eines Tages (in anderen Worten, keine Zeit-element), ist fraglich, z.B. ACE/Jet hat aber eine zeitliche Daten Typ DATETIME für die 'DATE' ist ein synonym. Sie müssten eine Einschränkung (oder Validierung-Regel), um sicherzustellen, DATETIME-Werte, die nicht die Zeit haben, die Elemente z.B. EINSCHRÄNKUNG Datum_erstellt__keine_Zeit_element ÜBERPRÜFEN(date_created = DATEADD ("D", DATEDIFF('D', #1990-01-01 00:00:00#, date_created), #1990-01-01 00:00:00#);
InformationsquelleAutor Kevin Lamb | 2009-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gehe ich davon aus:
CURRENT_TIMESTAMP
in Standard-SQL (nicht direkt unterstützt durch ACE/Jet, obwohl) und nicht zu verwechseln mit SQL ServerTIMESTAMP
Datentyp;Wenn Sie Ihre Tabelle mit diesem SQL-DDL:
dann die folgenden SQL-DDL möchte hinzufügen, die
DEFAULT
Ihr verlangen:Den oben genannten ACE/Jet-SQL-syntax die ANSI-92-Abfragemodus Geschmack. Verwenden Sie dieses über die MS-Access-Schnittstelle (z.B. ein Query-Objekt SQL-Ansicht) sehen Microsoft Office Access: Über ANSI-SQL-Abfrage-Modus (MDB). Dazu programmgesteuert mithilfe von SQL-DDL benötigt (AFAIK) die Verwendung von OLE DB, die in VBA benötigt (AFAIK) die Verwendung von ADO. DAO verwendet immer den ANSI-89-Abfrage-Modus syntax, deren SQL-DDL-syntax fehlt Unterstützung für
DEFAULT
.Wenn Sie mit Access (anstatt ACE/Jet standalone), die Sie verwenden können, eine einzige Zeile VBA (ADO) - code:
InformationsquelleAutor onedaywhen
Anstelle von jetzt() getdate(). Kann nicht überprüfen, der andere Teil der syntax (keine sql hier und ich habe selten ändern Tabellen :)), aber sollte etwa die gleiche.
Bearbeiten:
Scheint, dass SQL nicht erlaubt ändern der Standardeinstellungen so leicht. Blick auf auf dieser Seite, in denen die praktische Beispiel - Sie brauchen, um zu ändern, Einschränkungen, weil MSSQL behandelt die Standardwerte Einschränkungen. Sorry für die Fehlinformation.
getdate() gibt die volle Zeit, keine Sorge.
Offenbar MSSQL ist ein bisschen schwieriger mit Standardeinstellungen - Sie müssen drop/create bestimmten Einschränkungen. Ich bearbeitet meine Antwort, um dies zu reflektieren.
Wow das ist wirklich seltsam. Schön finden!
Ich hätte gedacht, dass "Microsoft Access DateTime Default Nun per SQL" bedeutete, Sie waren mit ACE/Jet nicht mit SQL Server.
InformationsquelleAutor Arvo
In SQL Server wäre es:
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT getDate()
InformationsquelleAutor James Conigliaro
Ich vorschlagen, anlegen oder umstrukturieren, Jet-Tabellen verwenden Sie DAO anstelle von DDL. Es bietet die Möglichkeit, control-Eigenschaften, die fehlen, sind in Jet Umsetzung von DDL. Die Access-Hilfe sollte Ihnen das, was Sie brauchen.
Ich glaube nicht, erstellen von Tabellen im code jeder form. Ich sehe nicht den Punkt.
Unabhängig davon, wie Sie Tabellen erstellen, haben Sie sich jemals explizit verwenden Sie die "Eigenschaften, die fehlen, sind in Jet Umsetzung von DDL"?
BTW der Punkt, der das erstellen von Tabellen in code, statt einer GUI, so dass Ihre Aktionen können wiederholt werden und reproduziert werden, z.B., wenn ich beschreiben will einen ACE - / - Jet-Funktion hier auf SO Neige ich dazu schreiben ein VBA-Skript zu fabrizieren ein .mdb im Windows-temp-Ordner, erstellen von Tabellen, einfügen von test-Daten und ausführen von SQL-tp-reproduzieren Sie das problem. IMO, machen die Dinge so einfach wie möglich für den Leser zu reproduzieren Sie das Szenario. Wenn ich stattdessen geschrieben Beschreibungen, wie zum Bearbeiten der Access-Benutzeroberfläche, das gleiche zu tun ich Zweifel, wie viele folk-würde gestört werden, um tatsächlich reproduzieren Sie das Szenario.
Ich habe seit der Buchung im online-Zugang zu den Foren seit 1996 und haben nicht einmal erforderlich, um post-DDL-um eine Tabelle zu beschreiben Struktur, so halte ich deinen Punkt sehr schwach. Die meisten der Zeit, sehe ich DDL beschreibt die gesamte Tabelle Strukturen, ich sehe ZU VIEL INFORMATIONEN, und nicht genug beschneiden der Beitrag unten, der wesentliche Punkt. Für diejenigen, die nicht sehr gut auf die Fragen in einem technischen forum vielleicht mehr Infos. ist besser, aber ich würde lieber sehen, die Leute machen einen besseren job der Formulierung Ihrer Frage, eher als die Bereitstellung von Tonnen von Informationen, die nicht für die konkrete Frage.
InformationsquelleAutor David-W-Fenton