Avatar billede Jman Praktikant
03. april 2003 - 15:44 Der er 32 kommentarer og
2 løsninger

Insert tidsstempel i oracledb

Når jeg vil sætte et timestamp i sql skriver jeg now(). Men hvad skal man skrive, hvis det skal indsættes i e oracle DB ?
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:20 #1
I oracle bruge man TO_DATE, men det kan udelades. Hvis du vælger at udelade det skal du bruge et format som hedder mm-dd-yy.
Avatar billede Jman Praktikant
03. april 2003 - 16:22 #2
hvordan skal jeg så eksempelvis lave denne:
"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & now() & "','" & TEXT & "')"

Jeg får nemlig "invalid month"-fejlmeddelelse
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:24 #3
ja det gør du nok fordi at den tro at måneden er dagen.
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:26 #4
Prøv lige denne her:

"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & Month(now) & "-" & Day(now) & "-"  & Year(now) & "','" & TEXT & "')"
Avatar billede Jman Praktikant
03. april 2003 - 16:30 #5
stadig: [Oracle][ODBC][Ora]ORA-01843: not a valid month

jeg skal egentlig også bruge: [DD-MM-YYYY HH:MM.SS]
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:34 #6
Det er nok ikke så svært har lige slået op, man bruger faktisk også YYYY-MM-DD og HH:MM:SS i oracle.
2 min.. skal lige overveje hvordan det nemmest kan gøres.
Avatar billede Jman Praktikant
03. april 2003 - 16:35 #7
ok - glæder mig til det....
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:35 #8
Virker denne ???

"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & Date & Time & "','" & TEXT & "')"
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:36 #9
Det er godt nok formattet [YYYY-MM-DD HH:MM.SS] istedet for, men det kan du jo bare ændre når du hiver dataene ud igen.
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:45 #10
Hvis det ikke virker då prøv med denne her, virker altid i Access, men er ikke sikker når vi snakker oracle.

"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & FormatDateTime(Now, vbShortDate) & FormatDateTime(Now, vbLongTime) & "','" & TEXT & "')"
Avatar billede Jman Praktikant
03. april 2003 - 16:45 #11
desværre giver det samme fejl
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:45 #12
Det er nemlig det rigtige format.
Avatar billede Jman Praktikant
03. april 2003 - 16:47 #13
Uanset ovennævnte post, er det jo stadigvæk forkert i forhold til Oracle DB'en
Dette er min response.write:
Insert into ANNTID (event, timestamp, text) VALUES ('Modtaget','03-04-200316:45:45','335237')
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:50 #14
Nu har jeg ikke arbejdet så meget med datoer i oracle så jeg er absolut ikke på hjemmebane, men kan du så ikke bruge denne her:

"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & Date &" " & Time & "','" & TEXT & "')"
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:53 #15
Jeg skrev tidligere at Date giver formattet YYYY-MM-DD, det var en fejl fra min side den giver DD-MM-YYYY, så det er Date og Time du skal have fat i her.
Avatar billede Jman Praktikant
03. april 2003 - 16:56 #16
... not a valid month ... :/
Avatar billede -master-d- Nybegynder
03. april 2003 - 16:57 #17
Er det alt som den skriver ?
Avatar billede Jman Praktikant
03. april 2003 - 17:00 #18
næsten...
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Oracle][ODBC][Ora]ORA-01843: not a valid month

/prepres/sapss/default_adm_history.asp, line 442
Avatar billede e.oersted Nybegynder
03. april 2003 - 17:02 #19
Det behøver vist ikke være så vanskeligt.
I Oracle kan du anvende sysdate:
INSERT INTO anntid(event,timestamp,text) VALUES('xx',sysdate,'ttt')

Hvis du ikke ønsker timer:minutter etc. kan du skrive trunc(sysdate)
Avatar billede Jman Praktikant
03. april 2003 - 17:05 #20
den har jeg også prøvet, men den poster ingenting
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:09 #21
Nej det mente jeg heller ikke og kan ikke helt forstå at det andet heller ikke virker.
Avatar billede e.oersted Nybegynder
03. april 2003 - 17:10 #22
Har du skrevet sysdate nøjagtig som ovenfor?
Hvilken version af Oracle snakker vi om?
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:13 #23
Søgte lige her på eksperten, kan dette muligvis virke.

Dim timestamp
timestamp = Right(\"2000\" & Year(Now()), 4)
timestamp = timestamp & Right(\"00\" & Month(Now()), 2)
timestamp = timestamp & Right(\"00\" & Day(Now()), 2)
timestamp = timestamp & Right(\"00\" & Hour(Now()), 2)
timestamp = timestamp & Right(\"00\" & Minute(Now()), 2)
timestamp = timestamp & Right(\"00\" & Second(Now()), 2)

"Insert into ANNTID (event, timestamp, text) VALUES ('" & timestamp & "','" & TEXT & "')"
Avatar billede Jman Praktikant
03. april 2003 - 17:13 #24
Det der irriterer mig er at jeg kan se datoformatet fra tidligere poster og det står således [DD-MM-YYYY HH:MM:SS]
Når jeg så vil poste det samme (som jeg kan se jeg gør med min response.write - ja så duer den ikke :(
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:16 #25
Hov skulle nok have været :

Dim timestamp
timestamp = Right(\"00\" & Day(Now()), 2)
timestamp = timestamp & Right(\"00\" & Month(Now()), 2)
timestamp = timestamp & Right(\"2000\" & Year(Now()), 4)
timestamp = timestamp & Right(\"00\" & Hour(Now()), 2)
timestamp = timestamp & Right(\"00\" & Minute(Now()), 2)
timestamp = timestamp & Right(\"00\" & Second(Now()), 2)
Avatar billede Jman Praktikant
03. april 2003 - 17:18 #26
Microsoft VBScript compilation error '800a03ea'

Syntax error

/prepres/sapss/default_adm_history.asp, line 5

timestamp = Right(\"00\" & Day(Now()), 2)
------------------^
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:19 #27
ok virkede altså ikke.
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:28 #28
Dette her giver det rigtige tidsformat

Dim timestamp
timestamp = Right("00" & Day(Now()), 2) & "-"
timestamp = timestamp & Right("00" & Month(Now()), 2) & "-"
timestamp = timestamp & Right("2000" & Year(Now()), 4) & " "
timestamp = timestamp & Right("00" & Hour(Now()), 2) & ":"
timestamp = timestamp & Right("00" & Minute(Now()), 2) & ":"
timestamp = timestamp & Right("00" & Second(Now()), 2)

resultat : 03-04-2003 17:24:08.

Så burde du ikke så kunne bruge.

Dim timestamp
timestamp = Right("00" & Day(Now()), 2) & "-"
timestamp = timestamp & Right("00" & Month(Now()), 2) & "-"
timestamp = timestamp & Right("2000" & Year(Now()), 4) & " "
timestamp = timestamp & Right("00" & Hour(Now()), 2) & ":"
timestamp = timestamp & Right("00" & Minute(Now()), 2) & ":"
timestamp = timestamp & Right("00" & Second(Now()), 2)

"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & timestamp & "','" & TEXT & "')"
Avatar billede Jman Praktikant
03. april 2003 - 17:31 #29
response.write now() giver også 03-04-2003 17:29:09
men jeg kan heller ikke bruge
timestamp = now()
"Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & timestamp & "','" & TEXT & "')"
Avatar billede -master-d- Nybegynder
03. april 2003 - 17:35 #30
Ja, men tænkte at det måske kunne lykkes hvis man selv lavede formattet. Jeg må indrømme at jeg er ved at løbe helt tør for ideer.

Hvilken metode brugte du ved de gamle værdier ?
Og hvad kan du muligvis have ændret?
Avatar billede Jman Praktikant
03. april 2003 - 17:38 #31
de "gamle" værdier bliver postet ind via et program. jeg har ikke sourcen til den.
Avatar billede e.oersted Nybegynder
03. april 2003 - 18:30 #32
Hvad er data-formatet på now() i ASP?
En løsning kan være at konvertere din now() til en char-streng.
Oracle har en funktion, der omsætter en char-streng til date-format:
TO_DATE(char-streng,format-string)
Eksempel:
TO_DATE('2003-04-03 18:27:41','YYYY-MM-DD HH:MM:SS')

Så sørg for at dit input-felt er en char-streng, hvor du kender formatet, og angiv så det tilsvarende format i format-string ovenfor
Avatar billede Jman Praktikant
03. april 2003 - 18:47 #33
det har jeg også prøvet - det giver en type mismatch.
anywayz - det bliver nok ikke løst foreløbigt... da Oracle åbenbart er en klodshans til dato/tid. Og det er netop noget med at finde ud af den rigtige formular i TO_DATE. Jeg synes jeg har prøvet alt, så nu kaster jeg sgu datoen over i et tekstfelt i stedet med Now()

Takker for forsøgene! :)
Avatar billede falslev Nybegynder
20. november 2003 - 15:39 #34
Ved godt dette indlæg er gammelt men da jeg selv lige har siddet med samme problem vil jeg lige ligge min løsning som jeg fik til at virke:

OracleDate = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date()) & " " & Hour(Time) & ":" & Minute(Time)  & ":" & Second(Time)

TO_DATE('" & OracleDate & "', 'RRRR-MM-DD HH24:MI:SS')
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