Avatar billede hedemann Nybegynder
10. november 2006 - 11:25 Der er 3 kommentarer og
1 løsning

Ændring i datoen fra 1900 til 1899?

Hej

jeg oplever en ændring i den måde hvorpå at vores sqlserver håndter datoer.

I "gamle" dage, når jeg indsat tiden f.eks. '7:00' i et datetime felt vil der i feltet stå '1900-01-01 07:00:00', men nu står er '1899-12-30 07:00:00'

Hvad er der sket?
Avatar billede hedemann Nybegynder
10. november 2006 - 12:14 #1
Mere info, ved en update står der 1899-12-30 før stod der 1900-01-01. Ved ikke om det kan bruges til noget

UPDATE    Tabel
SET      Tid = CONVERT(DATETIME, '1899-12-30 07:00:00', 102)
WHERE    (key = 1)
Avatar billede ramad Praktikant
15. november 2006 - 19:02 #2
Hejsa hedemann

Datetime i SQL Serveren har jeg selv haft en del undren over. Den forklaring jeg er kommet frem til er, at hvis du bruger Enterprise Manager til at indsætte din tid, så vil du få påhæftet en default dato, der hedder 1899-12-30, hvilket er dennes startdato. Hvis du derimod bruger et andet program til at indsætte din tid, som f.eks. Query Analyser, så vil du få startdatoen 1900-01-01.

Det er dybt mærkeligt at de har valgt at bruge to forskellige startdatoer, men sådan lader det til at være.

Du kan evt. selv prøve at se hvad jeg mener ved at lave følgende test:

I QUERY ANALYSER:
-----------------
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[DatoProblem]') and OBJECTPROPERTY(id, N'IsUserTable')
= 1)
drop table [dbo].[DatoProblem]
GO

CREATE TABLE [dbo].[DatoProblem] (
[Dato] [datetime] NOT NULL
) ON [PRIMARY]
GO

INSERT INTO dbo.DatoProblem (Dato)
VALUES ('18:30:00')

SELECT Dato FROM dbo.DatoProblem
-----------------
Her skulle du gerne få outputtet "1900-01-01 18:30:00.000"

Hvis du derefter hopper over i Enterprise Manager og åbner tabellen og manuelt indsætter værdien "19:30:00" og opdaterer tabellen, så vil du have følgende to rækker.

01-01-1900 18:30:00
19:30:00

Hopper du så tilbage til Query Analyser og selevter tabellen igen SELECT Dato FROM dbo.DatoProblem får du følgende resultat:

1900-01-01 18:30:00.000
1899-12-30 19:30:00.000

Håber ikke det blev for forvirrende :)
Avatar billede hedemann Nybegynder
16. november 2006 - 07:29 #3
Det må jeg nok sige - jeg har lige prøvet, og du har ret...mystisk.

Findes der en løsning, kan man evt. juster de to system datoer således at de bliver ens?
Avatar billede ramad Praktikant
16. november 2006 - 08:06 #4
Jeg er ikke stødt på nogen løsning på problemet - ud over at man selv må indsætte dato sammmen med tiden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester