/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Dato - US format (endnu et problem)
Fra : Lars Grove Mortensen


Dato : 18-09-02 21:10

Hej alle

Jeg har tidligere spurgt om hjælp i forbindelse med dato i
US-format (og har også fået værdsatte brugbare svar!)... Men nu
står jeg overfor en ny problemstilling, som jeg håber I vil være
behjælpelige med at løse...

Det drejer sig om indsættelse af en post i en tabel i en Access
2000 database på en IIS 5.1 via en ASP-side (selvfølgelig).

Mit problem er følgende:

Jeg skriver; dato = date - og indrykker så værdien af dato til
det felt i tabellen, der hedder Dato.

Men det sjove (og irriterende) er at når man så kigger i
databasen, har den ikke skrevet den rigtige dato, men derimod
00:00:22 (hvilket vel sikkert er et klokkeslet?)...

Hvordan får jeg den til rent faktisk at indrykke dato'en?


På forhånd mange tak for hjælpen!

MVH
Lars G Mortensen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Lars Grove Mortensen (18-09-2002)
Kommentar
Fra : Lars Grove Mortensen


Dato : 18-09-02 21:18

...For lige at forebygge en evt. forvirring mht., hvorfor jeg
skriver "US-format" osv i topic...

Jeg går ud fra, at problemet opstår som følger af, at der er et
skisme mellem serveren (der konstant returnerer US-format
tid/dato) og databasen (der er dansk).

Er det mon rigtigt antaget?


MVH
Lars G. Mortensen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (18-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 18-09-02 21:37

On Wed, 18 Sep 2002 20:18:26 +0000 (UTC), Lars Grove Mortensen
<lars@grove-mortensen.dk> wrote:

>Jeg går ud fra, at problemet opstår som følger af, at der er et
>skisme mellem serveren (der konstant returnerer US-format
>tid/dato) og databasen (der er dansk).
>
>Er det mon rigtigt antaget?

Det er meget muligt - og i hvert fald meget udbredt :)
Prøv at sætte:
Session.LCID = 1030
i toppen af dine ASP-sider, hvis du vil arbejde med danske standarder.

En anden tommelfingerregel:
Når man arbejder med dato/tid, så undgå at fokusere på *formatet*, men
i stedet på *værdien*.
Dvs. alle beregninger bør (så vidt muligt) foretages på uformatterede
værdier. Først når der skal udskrives eller på anden måde leveres et
output til et andet interface, kan man levere det i et passende
format.

--
Jørn Andersen,
Brønshøj

Lars Grove Mortensen (18-09-2002)
Kommentar
Fra : Lars Grove Mortensen


Dato : 18-09-02 21:55

"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:olohouk1k60v25gle9h9e42sahoopku48r@4ax.com...
>
> Prøv at sætte:
> Session.LCID = 1030
> i toppen af dine ASP-sider, hvis du vil arbejde med danske standarder.
>

Det har jeg gjort - og jeg har også prøvet med SetLocale(1030), men den
viser desværre stadig dato i US-format på trods af dette... Hvorfor??


> En anden tommelfingerregel:
> Når man arbejder med dato/tid, så undgå at fokusere på *formatet*, men
> i stedet på *værdien*.
> Dvs. alle beregninger bør (så vidt muligt) foretages på uformatterede
> værdier. Først når der skal udskrives eller på anden måde leveres et
> output til et andet interface, kan man levere det i et passende
> format.
>

Det har jeg tænkt over, men nu virker det jo, så vi lader det være, som det
er... Men jeg skal nok huske det til en anden gang.


Med venlig hilsen
Lars Grove Mortensen



Jørn Andersen (18-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 18-09-02 21:29

On Wed, 18 Sep 2002 20:09:41 +0000 (UTC), Lars Grove Mortensen
<lars@grove-mortensen.dk> wrote:

>Det drejer sig om indsættelse af en post i en tabel i en Access
>2000 database på en IIS 5.1 via en ASP-side (selvfølgelig).
>
>Mit problem er følgende:
>
>Jeg skriver; dato = date - og indrykker så værdien af dato til
>det felt i tabellen, der hedder Dato.

Det kunne være interessant at se (den relevante del af) din kode + din
SQL.

>Men det sjove (og irriterende) er at når man så kigger i
>databasen, har den ikke skrevet den rigtige dato, men derimod
>00:00:22 (hvilket vel sikkert er et klokkeslet?)...

Og feltet er sat til at vise både dato og tid?

>Hvordan får jeg den til rent faktisk at indrykke dato'en?

Jeg plejer at bruge funktionen på denne side:
<URL:
http://groups.google.com/groups?hl=da&selm=1879jt0nj8ng3066tpe91bs1frm82c7u2p%404ax.com>

Good luck!

--
Jørn Andersen,
Brønshøj

Lars Grove Mortensen (18-09-2002)
Kommentar
Fra : Lars Grove Mortensen


Dato : 18-09-02 21:42

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
>
> Det kunne være interessant at se (den relevante del af) din kode + din
> SQL.
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj


Hej Jørn

Jeg kom selv op med en løsning på problemet... Jeg satte ' omkring værdien i
SQL-indryk-koden... Altså:

strSQL = "Insert into annoncer ("
strSQL = strSQL & "Dato, "
<ZAP>
strSQL = strSQL & "values("
strSQL = strSQL & "'" & dato & "',"


Samtidig lavede jeg om på angivelsen af "dato", så den blev til:

dato = day(Date) & "-" & month(Date) & "-" & year(Date)


Og det hjalp - nu skriver den 18-09-2002 i Dato feltet i databasen...


Men ellers mange tak for din respons!

Med venlig hilsen
Lars Grove Mortensen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (18-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 18-09-02 21:59

On Wed, 18 Sep 2002 20:41:53 +0000 (UTC), Lars Grove Mortensen
<lars@grove-mortensen.dk> wrote:

>Jeg kom selv op med en løsning på problemet... Jeg satte ' omkring værdien i
<snip>
>strSQL = strSQL & "'" & dato & "',"

Det vil sige, hvis man skal være lidt pedantisk, at du indsætter en
tekststreng i et datofelt.

>Samtidig lavede jeg om på angivelsen af "dato", så den blev til:
>
>dato = day(Date) & "-" & month(Date) & "-" & year(Date)

Hermed har du gjort dig uafhængigt af dato-*formatet* mellem VB Script
og SQL, men ikke mellem SQL og database.

>Og det hjalp - nu skriver den 18-09-2002 i Dato feltet i databasen...

Så længe du er sikker på, at databasen fortolker det som dansk
datoformat, så går det vel, men jeg vil stadig betragte det som
"usikker kode".

Fordelen ved den funktion, jeg linkede til, er at den er uafhængig af
dato-*formatet*, fordi den bruger dato-*værdien* til direkte at
generere SQL's dato-funktioner.

--
Jørn Andersen,
Brønshøj

Tobias Hinnerup (19-09-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 19-09-02 06:57


"Jørn Andersen" <jorn@jorna.dk> wrote in message >
> Fordelen ved den funktion, jeg linkede til, er at den er uafhængig af
> dato-*formatet*, fordi den bruger dato-*værdien* til direkte at
> generere SQL's dato-funktioner.

Huh? DateSerial returnerer jf. VBScript dokumentionen noget i retning af "May 31, 1980" -
hvorfor dét er mere "sikret" end det andet kan jeg ikke umiddelbart gennemskue?

Så vidt jeg kan se bliver der ikke i det du linker til brugt nogen dato-funktioner fra
SQL - men det kan selvfølgelig være at jeg i anledning af morgenstunden stadig har
søvnklatter i øjnene?

/Tobias



Jørn Andersen (19-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 19-09-02 10:35

On Thu, 19 Sep 2002 07:56:34 +0200, "Tobias Hinnerup"
<hinnerup@nospamhinnerup.net> wrote:

>"Jørn Andersen" <jorn@jorna.dk> wrote in message >
>> Fordelen ved den funktion, jeg linkede til, er at den er uafhængig af
>> dato-*formatet*, fordi den bruger dato-*værdien* til direkte at
>> generere SQL's dato-funktioner.
>
>Huh? DateSerial returnerer jf. VBScript dokumentionen noget i retning af "May 31, 1980" -
>hvorfor dét er mere "sikret" end det andet kan jeg ikke umiddelbart gennemskue?

Prøv at udskrive SQL-strengen :)

Humlen er, at funktionen ikke leverer *resultatet* af DateSerial, men
DateSerial selv - som det så er op til databasen at eksekvere.

Altså ikke:
strSQL = "... May 31, 1980 14:55:00 ..."

Men:
strSQL = "... DateSerial(1980, 5, 31) + TimeSerial(14, 55, 0) ..."

Argumenterne til DateSerial/TimeSerial tages direkte fra
dato-*værdien* og er dermed format-uafhængige.

--
Jørn Andersen,
Brønshøj

Tobias Hinnerup (19-09-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 19-09-02 11:10


"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:b36jouc89vu0tr4f2vqgo4cqfmqha7jblt@4ax.com...
>
> Altså ikke:
> strSQL = "... May 31, 1980 14:55:00 ..."
>
> Men:
> strSQL = "... DateSerial(1980, 5, 31) + TimeSerial(14, 55, 0) ..."

Aha - my mistake, jeg overså et citationstegn, da jeg kiggede efter en "SQL-funktion"!

Ikke helt tilfældigt dog, for DateSerial står ikke som en del af ANSI SQL men er en
proprietær MS-udvidelse, nuppet fra VB. That's the price you pay

/Tobias




Jørn Andersen (19-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 19-09-02 12:32

On Thu, 19 Sep 2002 12:09:38 +0200, "Tobias Hinnerup"
<hinnerup@nospamhinnerup.net> wrote:

>Ikke helt tilfældigt dog, for DateSerial står ikke som en del af ANSI SQL men er en
>proprietær MS-udvidelse, nuppet fra VB. That's the price you pay

Aha, det var jeg ikke klar over. Jeg har kun selv brugt den til MS
Access - virker den også i MS SQL?

--
Jørn Andersen,
Brønshøj

Peter Lykkegaard (19-09-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-09-02 14:28

Som svar på skriblerier nedfældet af Jørn Andersen :

> On Thu, 19 Sep 2002 12:09:38 +0200, "Tobias Hinnerup"
> <hinnerup@nospamhinnerup.net> wrote:
>
>> Ikke helt tilfældigt dog, for DateSerial står ikke som en del af
>> ANSI SQL men er en proprietær MS-udvidelse, nuppet fra VB. That's
>> the price you pay
>
> Aha, det var jeg ikke klar over. Jeg har kun selv brugt den til MS
> Access - virker den også i MS SQL?

Nope - Peter Lykkegaard



Jørn Andersen (19-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 19-09-02 17:52

On Thu, 19 Sep 2002 15:27:36 +0200, "Peter Lykkegaard"
<polonline@hot.mail.com> wrote:

>> Aha, det var jeg ikke klar over. Jeg har kun selv brugt den til MS
>> Access - virker den også i MS SQL?
>
>Nope - Peter Lykkegaard

Tak - så vil jeg huske at sætte advarsel på, næste gang jeg anbefaler


Er der en lignnede løsning til MS SQL? (Altså ikke lige præcis til
Date, men til hvilken som helst dato)

Vil nogen kommentere på om det bare er mig, der synes at det må være
den mest optimale løsning (altså til MS Access) - eller om jeg bare
har stirret mig blind og overset en fatal ulempe ved metoden?

--
Jørn Andersen,
Brønshøj

Tobias Hinnerup (19-09-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 19-09-02 19:07


"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:7tvjougt6k47crvf7e9acuub10ntgfsus5@4ax.com...

> Vil nogen kommentere på om det bare er mig, der synes at det må være
> den mest optimale løsning (altså til MS Access) - eller om jeg bare
> har stirret mig blind og overset en fatal ulempe ved metoden?

Udover performace-udgiften ved at have funktionskald i begge ender, ville det give klarere
kode at benytte "military-style"/ISO 8601 internationale dato-angivelser (yyyy-mm-dd). Jeg
har ikke testet hvordan Access håndterer det, men dét datoformat burde det ikke være
muligt at misforstå.

/Tobias




Jens Gyldenkærne Cla~ (19-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-09-02 21:19

Jørn Andersen skrev:

> Er der en lignnede løsning til MS SQL? (Altså ikke lige præcis
> til Date, men til hvilken som helst dato)

convert(datetime, 'dd-mm-yy', 5)
convert(datetime, 'dd-mm-yyyy', 105)

....eller et andet af de små 30 forskellige datoformater convert
forstår.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Christian Svenstrup (19-09-2002)
Kommentar
Fra : Christian Svenstrup


Dato : 19-09-02 07:04

"Lars Grove Mortensen" <lars@grove-mortensen.dk> skrev i en meddelelse
news:amami5$8mb$1@sunsite.dk...
> Det drejer sig om indsættelse af en post i en tabel i en Access
> 2000 database på en IIS 5.1 via en ASP-side (selvfølgelig).
>
> Hvordan får jeg den til rent faktisk at indrykke dato'en?
>

Hej Lars Grove Mortensen.

Jeg har "bøvlet" meget med datoer og Access. Jeg har ladet mig fortælle, at
Access skal bruge dato-formatet "mm-dd-yy", når man indsætter en dato. I
Access sætter man # omkring datoer. Du skal selvfølgelig sørge for, at
feltet i databasen er sat til en dato. Her er hvordan jeg indsætter den
aktuelle dato i en Access-database:

dato=month(date) & "-" & day(date) & "-" & year(date)

set RS=objConn.execute("INSERT INTO tabel VALUES (#" & dato & "#)")

Jeg håber du kan bruge det. Det virker i alt fald for mig!

Med venlig hilsen

Christian Svenstrup



Peter Lykkegaard (19-09-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-09-02 10:36

Som svar på skriblerier nedfældet af Lars Grove Mortensen :
>
> Jeg skriver; dato = date - og indrykker så værdien af dato til
> det felt i tabellen, der hedder Dato.

Hvis feltet i tabellen er af typen Date, så lade din SQL klare den side af
sagen
I access hedder funktionen Date() og i mssql hedden den GetDate()

Under forudsætnig at det er dags dato der skal gemmes

mvh/Peter Lykkegaard







Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste