Avatar billede bsp_andreas Nybegynder
18. august 2004 - 11:45 Der er 18 kommentarer og
1 løsning

Dato uden tid??

Hej
I min db skal jeg bruge et dato-felt. Jeg bruger indtil videre "datetime", men mit problem er at når jeg trækker det ud og over på min asp.net side viser den også tid og det skal jeg som sådan ikke bruge. Kun selve datoen er vigtig.

Kan jeg slå det fra i db'en eller skal jeg til at fjerne det i koden??
Avatar billede arne_v Ekspert
18. august 2004 - 11:47 #1
Normalt vil man fjerne det i koden.
Avatar billede fennec Nybegynder
18. august 2004 - 11:55 #2
Hvis du f.eks. bruger now() til at indsætte med får du klokken med. Hvis du der i mod bruger date() er den der ikke.

Ellers kan det, som arne_v siger, nemt fjernes i koden.
Avatar billede bsp_andreas Nybegynder
18. august 2004 - 12:01 #3
Sjovt, i min sql server manager skriver den ikke noget om at der er tid, men den skriver den når jeg trækker den ud af db'en??
Avatar billede fennec Nybegynder
18. august 2004 - 12:11 #4
Mærkeligt... Det her jeg aldrig hørt om før. Jeg får aldrig klokken med hvis den ikke står i manager. Så må du vel fjern det i koden, som arne_v forslog.
Avatar billede trer Nybegynder
19. august 2004 - 09:57 #5
SQL Server har kun et DATETIME felt - dvs. den lagrer altid dato & tidspunkt uanset om man bruger DATE(), NOW() eller TIME().  Ved Date() er tidspunktet blot 12:00:00 mens datoen ved TIME() er 1 januar.  du skal derfor fjerne det i din vb kode - f.eks. vedat bruge SHORT DATE FORMAT på din streng.
Avatar billede fennec Nybegynder
19. august 2004 - 10:54 #6
trer >>

Der er jeg lidt uenig med dig. Jeg har arbejdet daglig med MS-SQL og ASP i 2 år nu, og hvis jeg bruger date() (gerne sat som default værdi) så får jeg ikke et klokkeslet med, hverken i manageren eller i koden. Det kan jo være det bare ikke bliver vist, men hvis jeg laver sammenligninger (med klokkeslet) opfører den sig som 00:00:00. Ikke 12:00:00.

Kunne det evt være en indstilling eller version forskelle???
Avatar billede arne_v Ekspert
19. august 2004 - 11:34 #7
Øh.

SQLServer har kun 2 data typer til tid:
  DATETIME med 3/100 sekunders nøjagtighed
  SMALLDATETIME med 1 minuts nøjagtighed

SQLServer har ikke nogen funktion ved navn DATE.

Jeg formoder at DATE er en funktion i ASP som returnerer dato.

Men da der eksplicit bliver nævnt at tiden skal hentes op fra SQLServer så
løser det jo ikke problemet.

Det korrekte svar er at applikationen skal formatere.
Avatar billede bsp_andreas Nybegynder
19. august 2004 - 11:46 #8
Korrekt! Applikationen formaterer nu den tid som SQL-Server returnerer og længere er den ikke. Du kan ikke sige til SQL-serv at den kun skal returnere datoen - den vil altid give tiden med.

Men det var ganske simpelt at fjerne det i koden.
Avatar billede fennec Nybegynder
19. august 2004 - 11:59 #9
arne_v >>

Jeg undskylder... Jeg var for hurtig på aftrækkeren.

Det hedder getDate (og den virker som now()). Jeg har også været en stor del kode igennem, og må konstatere at vi (næsten) altid overskriver med date() funktionen fra ASP, når vi indsætter/ændre data i DB'en.

Det ændre dog ikke på, at der faktisk kun står en dato i tabellerne, og der kun kommer en dato ud igen hos os.
Avatar billede arne_v Ekspert
19. august 2004 - 12:04 #10
Min 7 BOL siger:

GETDATE (T-SQL)
Returns the current system date and time in the Microsoft® SQL Server™ standard internal format for datetime values.

Og på en 2000 MSDE:

1> select getdate()
2> go

-----------------------
2004-08-19 12:08:26.043

(1 row affected)

Så jeg tror altså at ASP hjælper dig lidt behind the scne.
Avatar billede fennec Nybegynder
19. august 2004 - 12:31 #11
Det kan selvfølgelig være, men det kunne nu være rat at vide hvad der sker.

http://212.242.79.135/test.asp

Jeg har lavet en lille test side. Der er et dump fra manageren, samt en komplet udskrivning fra databasen af feltet EndTime. Koden til udskrivning er her, og som i kan se gør jeg ikke noget ved datoen.

<%
set oRs = oconn.execute("select * from events")
do while not oRs.eof
  Response.write "EndTime: "& oRs("endtime") & "<br>"
  oRs.MoveNext
loop
%>

Nogen der vil kommentere hvorfor jeg kan nøjes med at få datoen ud, mens andre åbentbart ikke kan???
Avatar billede bsp_andreas Nybegynder
19. august 2004 - 12:36 #12
de data jeg har tilføjet i min db, er gjort via sqlserver manager.
Jeg kunne forestille mig at hvis jeg lavede et par inserts hvor jeg brugte date() eller now() via asp ville den sikkert også kun indsætte dato - og dermed ikke vise tid når jeg trækker data'ene ud igen.
Avatar billede arne_v Ekspert
19. august 2004 - 12:41 #13
fennec>

Jeg ved ikke helt hvad vi skal konkludere ud fra den side.

Jeg ser f.eks.:

EndTime:
EndTime:
EndTime: 18-03-2003 14:00:00
EndTime:
EndTime: 18-03-2003
EndTime: 05-03-2003 09:15:00
EndTime: 17-03-2003 17:55:00
EndTime: 17-03-2003 19:15:00
EndTime: 18-03-2003 09:15:00
EndTime: 17-03-2003 09:30:00

med tid
uden tid
ingen ting (formentlig NULL)
Avatar billede arne_v Ekspert
19. august 2004 - 12:41 #14
Det kan være at det er 00:00:00 der bliver til '' !?
Avatar billede fennec Nybegynder
19. august 2004 - 12:50 #15
arne_v >>

Det lader til at du har rat. Hvis jeg indsætter 00:00:00 som klokkeslet, bliver det ikke vist i manageren, og derfor heller ikke på siden.
Avatar billede arne_v Ekspert
28. august 2004 - 19:04 #16
andreas>

Tid at få afsluttet spørgsmålet ?

Bed dem som du synes har hjulpet dig ligge et svar !
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 09:23 #17
jeps - jeg havde vist glemt det igen, efter jeres lange diskussion.

Det blev fjernet i koden!
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 09:24 #18
Hov! :)

Giv et svar!
Avatar billede arne_v Ekspert
04. september 2004 - 11:42 #19
mig ?
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