Formát datumu při INSERT rubrika: Databáze: SQL
Ahoj,
potýkám se z problémem INSERT do MSSQL.
Mám v MSSQL tabulku
CREATE TABLE StavySkladyHistory ( [ID] [int] IDENTITY(1,1) NOT NULL, [ID_Sklad] [int] NOT NULL, [Number] [nchar](10) NOT NULL, [Name] [nchar](100) NOT NULL, [ID_Parent] [int] NOT NULL, [ID_Level] [int] NOT NULL, [SkladSUM] [decimal](18, 3) NOT NULL, [SnapshotDate] [datetime] NOT NULL, PRIMARY KEY CLUSTERED (
Do které každý den ukládám stav skladu pomocí SQL UPDATE
$sql = "INSERT INTO StavySkladyHistory (ID_Sklad, Number, Name,ID_Parent,ID_Level,SkladSUM,SnapshotDate) VALUES (".$data['ID']." ,'".$data['Number']."' ,'".$data['Name']."' ,".$data['ID_Parent']." ,".$data['ID_Level']." ,".$data['HodnotaSKladu']." ,'".$datum."')";
Kdy datum je $datum = date("Y-d-m H:i:s");
Všiměte si "Y-d-m H:i:s"
Dotaz:
Proč musím insertovat datum ve formátu "Y-d-m H:i:s" a ne tak, jak bych očekával "Y-m-d"
Data v tabulce jsou ovšem ve formátu Y-m-d:
SELECT distinct [SnapshotDate] FROM StavySkladyHistory order by [SnapshotDate] 2017-10-14 20:00:01.000 2017-10-15 20:00:01.000 2017-10-16 20:00:01.000 2017-10-17 20:00:37.000
S "Y-m-d H:i:s" mi to přestane fungovat každého 13-31. v měsíci a SQL server mi vynadá, že špatný formát datumu
Děkuji za případné vysvětlení - hlava ani gůgl mi to nebere :(,
D
Formát datumu je nastavený na databázové sessioně a většina SQL editorů nastaví formát datumu na formát, který máš v nastavení už při otevírání spojení. Předpokládám, že ten select jsi nedělal z PHP, ale z nějakého editoru a proto se to vrací v jiném formátu.
SnapshotDate máš ve formátu datetime. Jestli nepotřebuješ časovou složku, použij date nebo smalldate.
Defaultní formát datumu závisí na nastavení jazyku na MSSQL serveru. Změnit to můžeš při otevírání databázového spojení přes SET DATEFORMAT ymd;
Nebo si můžeš změnit jazyk na nějaký vhodnější. Výpis všech jazyků včetně jejich formátu datumů získáš přes sp_helplanguage;
.
Aktuální formát datumu a jazyk zjistíš přes select s.date_format, s.language from sys.dm_exec_sessions s where s.session_id = @@SPID;
. Zkus si to spustit ze svého PHP kódu a z SQL editoru a uvidíš rozdíl.
Pro zobrazení všech 7 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře