sql >> Databáze >  >> RDS >> Sqlserver

Nelze uložit určité formáty data a času na SQL Server

SQL Server neukládá DateTime v libovolném formátu řetězce – je uložen jako 8bajtová číselná hodnota.

Různá nastavení (jazyk, formát data) ovlivňují pouze způsob DateTime se vám zobrazí v SQL Server Management Studio – nebo jak je analyzován, když se pokusíte převést řetězec na DateTime .

SQL Server podporuje mnoho formátů – viz MSDN Books Online na CAST a KONVERT . Většina těchto formátů je závislá podle toho, jaká nastavení máte – proto mohou tato nastavení někdy fungovat – a někdy ne.

Způsob, jak to vyřešit, je použít formát data ISO-8601 který je podporován SQL Serverem – tento formát funguje vždy - bez ohledu na váš jazyk SQL Server a nastavení formátu data.

formát ISO-8601 je podporován SQL Serverem a je dodáván ve dvou variantách:

  • YYYYMMDD pouze pro data (bez časové části) – poznámka zde:bez pomlček! , to je velmi důležité! YYYY-MM-DD je NE nezávisle na nastavení formátu data na vašem serveru SQL a NE pracovat ve všech situacích!

nebo:

  • YYYY-MM-DDTHH:MM:SS pro data a časy – poznámka zde:tento formát pomlčky.

To platí pro SQL Server 2000 a novější.

Pokud používáte SQL Server 2008 a DATE datový typ (pouze DATE - ne DATETIME !), pak můžete skutečně použít také YYYY-MM-DD formát a to bude fungovat také s jakýmkoli nastavením na vašem serveru SQL.

Neptejte se mě, proč je celé toto téma tak ošemetné a poněkud matoucí – tak to prostě je. Ale s YYYYMMDD formátu, měli byste být v pořádku pro jakoukoli verzi SQL Server a pro jakékoli nastavení jazyka a formátu data na vašem SQL Serveru.



  1. OracleConnection vyvolává prázdnou výjimku

  2. Jak uniknout řetězci při porovnávání vzoru v PostgreSQL

  3. ORA-01591 - Oracle odstraní data ze vzdálené tabulky SQL serveru

  4. Aktualizujte všechny řádky v databázi pomocí hodnoty hash