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 ?
Annonceindlæg fra Infor
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.
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
03. april 2003 - 16:24
#3
ja det gør du nok fordi at den tro at måneden er dagen.
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 & "')"
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]
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.
03. april 2003 - 16:35
#7
ok - glæder mig til det....
03. april 2003 - 16:35
#8
Virker denne ??? "Insert into ANNTID (event, timestamp, text) VALUES ('" & modt_event & "','" & Date & Time & "','" & TEXT & "')"
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.
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 & "')"
03. april 2003 - 16:45
#11
desværre giver det samme fejl
03. april 2003 - 16:45
#12
Det er nemlig det rigtige format.
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')
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 & "')"
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.
03. april 2003 - 16:56
#16
... not a valid month ... :/
03. april 2003 - 16:57
#17
Er det alt som den skriver ?
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
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)
03. april 2003 - 17:05
#20
den har jeg også prøvet, men den poster ingenting
03. april 2003 - 17:09
#21
Nej det mente jeg heller ikke og kan ikke helt forstå at det andet heller ikke virker.
03. april 2003 - 17:10
#22
Har du skrevet sysdate nøjagtig som ovenfor? Hvilken version af Oracle snakker vi om?
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 & "')"
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 :(
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)
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) ------------------^
03. april 2003 - 17:19
#27
ok virkede altså ikke.
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 & "')"
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 & "')"
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?
03. april 2003 - 17:38
#31
de "gamle" værdier bliver postet ind via et program. jeg har ikke sourcen til den.
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
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! :)
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')
Kurser inden for grundlæggende programmering