SQL Server powinien mieć datę utrzymywały się w jednym z następujących rodzajów i nigdy jako coś innego (przez cokolwiek innego, mam na myśli varchar
, text
, int
, BigInt
, czy cokolwiek innego „twórczego”)
DateTime2
DateTime
Date
DateTimeOffset
Dla kilku rodzajów patrz Date and Time Data Types and Functions (Transact-SQL)
wyświetlacza w SQL Server, dlatego nigdy nie powinno mieć znaczenia, ponieważ nie ma rzeczywisty wyświetlacz lub formatowanie związane z typem. To, co widzisz w oknie zapytania w SSMS, ma formatowanie, ale tylko dlatego, że musi być wyświetlane jak, to formatowanie jest zwykle wykonywane w notacji ISO8601 i nie ma nic wspólnego z faktycznym utrzymywaniem instancji.
Zwracany instancji w kodzie .NET z SQL Server powinny być typu System.DateTime
lub System.DateTimeOffset
, to ostatnie, jeśli są również za pomocą DateTimeOffset
w SQL Server, który utrzymuje się przesunięcie od UTC z instancji. Następnie można użyć ToString()
z różnymi opcjami formatowania, aby wyświetlić DateTime według uznania. Sposób wyświetlania/formatowania DateTime zawsze powinien być funkcją warstwy prezentacji i nigdy nie powinien być głębszy niż w stosie programu.
Zobacz Custom Date and Time Format Strings dla różnych opcji format string dostępnych NET przypadkach DateTime
Wracając do odpowiedniego kodu w PO
<asp:Label Text='<%# Convert.ToDateTime(Eval("date1")).ToString("yyyy/MM/dd") %>'
Convert.ToDateTime
powinny być usuwane jako zmienna date1
powinno być już przykład DateTime
(jeśli przestrzegasz najlepszych praktyk opisanych powyżej). Następnie możesz wywołać ToString
na tej instancji bezpośrednio z żądanym ciągiem formatu.
Co to jest w formancie 'date1'? Czy to jest prawidłowa data z bazy danych? – ekolis
@ekolis Przepraszamy, na moim pytaniu pojawia się literówka. Poprawiłem to. Data jest w języku SQL 2015-12-06 00: 00: 00.000. Strona wyświetla się jako 2016/06/12. Jest on pomieszany z miesiącem i dniem.Wygląda na to, że Visual Studio nie odczytuje daty tak samo jak serwer SQL. Data1 jest nazwą kolumny z zestawu danych SQL – user819774
Czy "date1" jest kolumną ciągów lub dat? Jeśli jest to data, dlaczego potrzebujesz Convert.ToDateTime? –