Avatar billede pablopablo Nybegynder
08. november 2007 - 13:54 Der er 13 kommentarer og
2 løsninger

Formattering af TimeStamp

Hejsa...

jeg skriver et TimeStamp objekt fra java ned i et DateTime felt i en MS SQL DB 2005...det virker fint...dog gemmes datoen i databasen i forkert format "mm-dd-yyyy". Jeg ønsker derfor, at ændre formatet til "dd-mm-yyyy" - så mit spørgsmål er, hvordan gør jeg det?

Mvh. PabloPablo
Avatar billede fsconsult.dk Nybegynder
08. november 2007 - 13:59 #1
hvordan gemmer du det præcist?  en dato kan ikke gemmes "forkert", hvis det sker direkte fra java-dato til mssql-dato.

bruger du prepared-statement til at opdatere din database med, eller konverterer du din dato til string først ?
Avatar billede pablopablo Nybegynder
08. november 2007 - 14:06 #2
jeg skriver new Timestamp(currDate.getTime() ned i databasen direkte fra java!

currDate = new java.util.Date();

og når jeg kigger direkte hvad der er skrevet i databasen står der dags dato som 11-08-2007...der skulle gerne stå 08-11-2007 som der plejer at stå når jeg skriver ned i samme database men fra dot net...
Avatar billede fsconsult.dk Nybegynder
08. november 2007 - 14:19 #3
bruger du et preparedstatement med rs.setDate(1,curDate) eller execute("dato=" + curDate.toString() ); ?
Avatar billede pablopablo Nybegynder
08. november 2007 - 14:38 #4
nej

Jeg formatere ikke datoen eller laver den om ti len strin gfør jeg skriveer den til db....jeg skriver et TimeStamp til databasen...intet andet...og typen i databasen er DateTime...og har lige prøvet at indlæse, den bytter om på day og måned idet data er skrives forkert i databasen...
Avatar billede pablopablo Nybegynder
08. november 2007 - 14:39 #5
undskyld de mange tastefejl...håber du forstår...:) ?
Avatar billede pablopablo Nybegynder
08. november 2007 - 14:42 #6
min java kode ser såldes ud:

stmt.executeUpdate("INSERT INTO myTable (AspNet_UserId, DateCreated, Durance) VALUES ('"+AspNet_UserId+"','"+new Timestamp(currDate.getTime())+"',"+timeRunning+")");
Avatar billede fsconsult.dk Nybegynder
08. november 2007 - 14:52 #7
iflg. din kode, så laver du faktisk implicit dit timestamp om til en string.

du skal så bruge SimpleDateFormat til at formattere dit timestamp i det format som din MS SQL forventer.  Jeg vil dog stadig anbefale at bruge preparedstatement istedet, så man skriver de rå java-datoer direkte til databasen, uanset hvad formatering databasen måtte være sat op til.
Avatar billede pablopablo Nybegynder
08. november 2007 - 15:03 #8
kan du vise mig hvordan jeg formatere datoen? Jeg har prøvet at udeladde '' plingerne omkring datoen ...men det ændrer intet...?
Avatar billede pablopablo Nybegynder
08. november 2007 - 15:08 #9
jeg har tidligere prøvet med:

java.text.SimpleDateFormat f = new java.text.SimpleDateFormat ("dd/mm/yyyy") ; 
                     
                    String formattedTime = f.format ( new Timestamp(currDate.getTime()));

og efterfølgende at skrive formattedTime  til DB, men det er stadig i "MM-dd-yyyy" format...?? :/
Avatar billede fsconsult.dk Nybegynder
08. november 2007 - 16:58 #10
husk på, at det format du SKRIVER datoen til MS SQL, ikke nødvendgvis er det format MS SQL viser dig datoen i igen ....

Først og fremmest er det vigtigt at du er 100% sikker på hvilket format din MS SQL server forventer at modtage en dato i, og dernæst skal du være sikker på at din executeUpdate indeholder netop dette format (som sagtens/ofte vil afvige fra det format du få det vist i, når du kigger direkte i MS SQL).
Når du laver executeUpdate, er det nødvendigt at sætte plinger omkring datoen.
Avatar billede pablopablo Nybegynder
08. november 2007 - 17:04 #11
Hej igen!

Jeg ved ikke hvilket format min db er sat op til, hvordan finder jeg ud af det?
Jeg er virkelig træt af at sidde fast, kan du ikke fortælle mig præcist hvad jeg skal skriver jeg at formatere min dato korrekt...det format jeg har prøvet ændrer ikke noget...
Avatar billede pablopablo Nybegynder
09. november 2007 - 12:02 #12
hey bare læg et svar...jeg fandt ud af at det kode jeg har postet 08/11-2007 15:08:12 faktisk virkede....der må have været snedet sig en lille fejl ind et sted...?-)
Avatar billede fsconsult.dk Nybegynder
09. november 2007 - 12:12 #13
Ok ... men vil stadig anbefale dig at bruge preparedstatements, så slipper du for at tænke på hvordan datoen er formatteret :-)
Avatar billede pablopablo Nybegynder
09. november 2007 - 12:42 #14
kan du så ikke vise mig hvordan? for jeg er ikke med....
Avatar billede fsconsult.dk Nybegynder
12. november 2007 - 07:48 #15
et ex. fra http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html :

PreparedStatement updateSales = con.prepareStatement(
        "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate():
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