2013-09-23 2 views
5

Witam Chciałbym zapytać, jak napisać instrukcję, która zaktualizuje pole daty w bazie danych; mam tabeli, która zawiera jeden rząd i jedna z valaues jest wZaktualizuj pole daty sql w mssqlserver w formacie RRRR-MM-DD

YYYY-MM-DD HH:MM:SS.MMM

przypadku MMM jest częścią sekundy. Jak to napisać?

+0

Jaki jest typ danych danego pola? Czy jest to "Date" lub coś podobnego do 'varchar'? –

Odpowiedz

7

Dla bieżącej daty

update your_table 
set date_field = getdate() 

lub dla bieżącej daty i czasu

update your_table 
set date_field = current_timestamp 

lub jakiegokolwiek datetime

update your_table 
set date_field = '2013-09-23 12:00:00.000' 
+0

ok, ale jak powinienem uzyskać getdate() wyglądać, możesz dać mi przykład? –

+0

getdate() jest wbudowaną funkcją serwera sql – smerlung

+0

Dziękuję. To działa. –

1

Ty mieszania dwie rzeczy. Jednym z nich jest formatowanie typu daty i godziny podczas wyświetlania/odlewania na varchar, a drugim jest sam typ.

Sam typ magazynuje datetime wewnętrznie i dla samego tego pytania nie dotyczy Ciebie. To jest zawsze takie samo. Sposób, w jaki to widzisz - np. SQL Server Management Studio - to zupełnie inna kwestia i zależy od przesyłania na ciąg bezpośrednio w zapytaniu (cast(dt_column as varchar(20))) lub pośrednio przez narzędzie, którego używasz.

Jeśli chcesz ręcznie ustawić typ datetime, zwykle piszesz ciąg znaków z datą bezpośrednio odlaną lub pośrednio odłożoną do formatu daty/godziny, np. declare @dt datetime = '2012-01-01 23:00:00' jest pośrednia, a declare @dt datetime = cast('2012-01-01 23:00:00' as datetime) jest bezpośrednia.

format YYYY-MM-DD HH24: MI: SS.mmm jest raczej kanoniczny więc jestem pewien, że można po prostu użyć odlew pośredni z łańcucha, dzięki czemu można po prostu napisać:

update [table_name_here] 
set [column_name_here] = '2013-01-01 23:12:11.123' 
where ... --this line only if needed; if you have only one row you may skip it 

Of Oczywiście zamień moją datę w "" na własną.