Avatar billede Jman Praktikant
20. august 2003 - 17:16 Der er 11 kommentarer og
1 løsning

Forkert tidsformat i min insert/update

Jeg kommer ofte på dette problem:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Hvordan kan jeg undgå at komme i kambolage med SQLdatbasen, når jeg vil indsætte tid?
Avatar billede Jman Praktikant
20. august 2003 - 17:20 #1
Jeg ved det er noget med sproget at gøre, og jeg har heller ingen problemer, hvis jeg sætte LCID til 1033. Men jeg vil jo gerne køre med dansk format, og så kan jeg ikke opdatere/indsætte i min database
Avatar billede Jman Praktikant
20. august 2003 - 17:22 #2
Jeg løser det p.t. med at lave en session LCID = 1033 før min insert og så ændrer den tilbage til 1030 efter eksekveringen...
Men det lyder som det lammeste, hvis det skulle være korrekt
Avatar billede Slettet bruger
20. august 2003 - 21:28 #3
Hvilken type er dit felt i databasen?
Hvordan ser en sætning ud som giver fejlen?
Avatar billede eagleeye Praktikant
20. august 2003 - 22:32 #4
Du kunne måske bruge Year, Month, Day til at formatere din dato inden du putter den i databasen, de fleste (Access,mySQL og sikker MSSQL) kan bruge datoformatet yyyy-mm-dd

strDato = Year(Date) & "-" & Month(Date) & "-" & Day(Date)
Avatar billede Jman Praktikant
21. august 2003 - 08:41 #5
jeg vil typisk forsøge at opdatere med date + time. Databasefeltet er en datetime (8).
eksempelvis benytter jeg:
<% oprettet = date+time %>, men den fejler så med ovenstående, med mindre jeg - inden updaten - sætte session.LCID til 1033
Avatar billede Jman Praktikant
21. august 2003 - 09:08 #6
eagleeye:
Kan du give mig et eksempel ud fra din konvertering og mine felter.. Jeg har nemlig lige fundet ud af at min egen metode ikke virker optimalt:

Registreret = date+time  <!-- skal registrere dato og tid -->
Deadline = request.form("deadline") <!-- skrive i et inputfelt som dd-mm-yyyy
Avatar billede eagleeye Praktikant
21. august 2003 - 19:35 #7
Jo.
De fleste bruger date+time er det det samme som Now, og de fleste databaser har både Date, Time og Now funktion, så du ikke behøver at formatere.

'Formater date+time
strDate = Year(Date) & "-" & Month(Date) & "-" & Day(Date)
Registreret = strDate & " " & time
SQL = "INSERT INTO tabel (datokol) VALUES ('" & Registreret & "')"

'Direkter indsæt Now() via SQL hvis MSSQL også har en now:
SQL = "INSERT INTO tabel (datokol) VALUES (Now())"


--

Den med deadline:

strDato = request.form("deadline") <!-- skrive i et inputfelt som dd-mm-yyyy
Deadline = Year(strDato) & "-" & Month(strDato) & "-" & Day(strDato)
Avatar billede Jman Praktikant
21. august 2003 - 20:28 #8
ok - på den måde... Nu tror jeg den er ved at hænge ve'
kast lige et svar op i luften
Avatar billede eagleeye Praktikant
21. august 2003 - 20:32 #9
Ok ;)
Avatar billede Jman Praktikant
22. august 2003 - 09:12 #10
hmmm - jeg troede jeg havde forstået det, men jeg får stadig fejlen her:
    if StrRekvirentLogon = initialer then
        StrNyDeadline = request.form("ny_deadline")
        deadline = Year(StrNyDeadline) & "-" & Month(StrNyDeadline) & "-" & Day(StrNyDeadline)
      else
        StrNyDeadline = StrDeadline
        deadline = Year(StrNyDeadline) & "-" & Month(StrNyDeadline) & "-" & Day(StrNyDeadline)
    end if
Avatar billede Jman Praktikant
22. august 2003 - 12:23 #11
det var et andet felt :D
Avatar billede eagleeye Praktikant
22. august 2003 - 15:56 #12
Køre din side med samme format som du indtaster ny_deadline i?
Hvis du skriver dd-mm-yyyy skal ASP siden køre med DK dato-foramt for Year, Month og Day tager de rigtige tal.
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
Kurser inden for grundlæggende programmering

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