Mam tabelę, która zbiera formularze przesłane z naszej strony internetowej, ale z jakiegoś powodu, kiedy utworzyli tabelę, nie umieścili w niej znacznika czasu. Chcę, aby podała dokładną datę i godzinę, kiedy rekord został wprowadzony.
Wiem, że gdzieś tam jest, ale nie mogę znaleźć sposobu, aby ustawić wartość domyślną (np. W programie Access, używasz getNow()
lub Now()
), ale nie wiem, gdzie ją umieścić.
sql-server
datetime
Stephmoreland
źródło
źródło
Odpowiedzi:
Aby zmodyfikować istniejącą kolumnę w istniejącej tabeli:
źródło
TheQ
zakłada, że zmieniasz istniejącą kolumnę, co nie wydaje mi się, że tak jest? Zobacz moją odpowiedź na kod, aby dodać nową kolumnę z tym domyślnym ograniczeniem.GETUTCDATE()
zamiastGETDATE()
Można to również zrobić za pomocą graficznego interfejsu użytkownika SSMS.
(getdate())
w polu Wartość domyślna lub Powiązanie, jak pokazano poniżejźródło
dateadd(minute, 10, GetDate())
sprawdzić, czy to zadziała.W tej tabeli w programie SQL Server określ domyślną wartość tej kolumny
CURRENT_TIMESTAMP
. Typ danych tej kolumny może być datetime lub datetime2.na przykład
źródło
CURRENT_TIMESTAMP
zwracadatetime
wartość w lokalnej strefie czasowej komputera. Należy tego unikać. Zamiast tego użyj,SYSUTCDATETIME
która zwraca adatetime2
w UTC.Podczas gdy zaznaczona odpowiedź jest poprawna z:
Podczas dodawania domyślnych wartości daty i godziny do kolumny należy zawsze pamiętać o strefach czasowych.
Powiedzmy na przykład, że ta
datetime
wartość ma na celu wskazanie, kiedy członek dołączył do strony internetowej i chcesz, aby była ona wyświetlana użytkownikowi,GETDATE()
da ci czas na serwerze, więc może pokazać rozbieżności, jeśli użytkownik znajduje się w innej lokalizacji niż serwer.Jeśli spodziewasz się, że będziesz kontaktować się z międzynarodowymi użytkownikami, w niektórych przypadkach lepiej jest użyć GETUTCDATE () , który:
Podczas pobierania wartości aplikacja / witryna frontonu powinna przekształcić tę wartość z czasu UTC do ustawień regionalnych / kultury użytkownika, który o nią prosi.
źródło
Nie zezwalaj na wartości Null w kolumnie i ustaw wartość domyślną w kolumnie
getdate()
źródło
Składnia tego podczas tworzenia nowej tabeli jest następująca:
źródło
To działa dla mnie ...
źródło
Działa to również:
Lub:
źródło
To zadziałało dla mnie. Korzystam z SQL Developer z Oracle DB:
źródło
Aby ułatwić śledzenie, podsumuję powyższe odpowiedzi:
Powiedzmy, że tabela nazywa się Klient ma 4 kolumny / mniej lub więcej ...
chcesz dodać nową kolumnę do tabeli, w której za każdym razem, gdy jest wstawiana ... wtedy ta kolumna prowadzi rejestr czasu zdarzenia.
Rozwiązanie:
dodaj nową kolumnę, powiedzmy, że timepurchase to nowa kolumna w tabeli z typem danych datetime .
Następnie uruchom następującą zmianę:
źródło
Załóżmy, że tworzysz tabelę bazy danych dla systemu rejestracji.
Teraz rejestruje się kilka osób.
Wtedy zdajesz sobie sprawę, że potrzebujesz sygnatury czasowej, kiedy się zarejestrują.
Jeśli ta aplikacja jest ograniczona do regionu zlokalizowanego geograficznie, możesz użyć czasu lokalnego serwera z
GETDATE()
. W przeciwnym razie należy wziąć pod uwagę uwagę Tannera dla globalnej publicznościGETUTCDATE()
wartością domyślną.Dodaj kolumnę z wartością domyślną do jednej instrukcji takiej jak ta odpowiedź .
Zdobądźmy kolejnego rejestrującego i zobaczmy, jak wyglądają dane.
źródło
W SQLPlus podczas tworzenia tabeli jest tak jak
SQL> utwórz test tabeli
SQL> wstaw do wartości Test (id) (1);
źródło