Avatar billede marui Nybegynder
27. maj 2005 - 16:22 Der er 22 kommentarer og
1 løsning

MySQL dato problemer

hej eksperter

Hvorfor indsætter den en ikke aktuel dato, og hvorfor indsætter den ikke automatisk dato i et felt, når jeg bruger time() samt date(), som den gør i access?

    SQL = "insert into messageboard(author, email, website, topic, body, ip, addeddate, addedtime) values('"
      SQL = SQL & author & "','"
      SQL = SQL & email & "','"
    SQL = SQL & website & "','"
      SQL = SQL & topic & "','"
      SQL = SQL & bodyStr & "','"
    SQL = SQL & date() & "','"
    SQL = SQL & time() & "','"


På forhånd tak for hjælpen
Avatar billede hmortensen Nybegynder
27. maj 2005 - 16:25 #1
Du kunne lave et DATETIME felt i tabellen, og bruge NOW() til at sætte aktuel dato/tid ind.
Avatar billede fixxxer Nybegynder
27. maj 2005 - 16:30 #2
MySQL serveren har selv indbyggede tidsfunktioner.

    SQL = "insert into messageboard(author, email, website, topic, body, ip, addeddate, addedtime) values('"
      SQL = SQL & author & "','"
      SQL = SQL & email & "','"
    SQL = SQL & website & "','"
      SQL = SQL & topic & "','"
      SQL = SQL & bodyStr & "','"
    SQL = SQL & "NOW(), "
    SQL = SQL & "NOW())"
Avatar billede marui Nybegynder
27. maj 2005 - 16:35 #3
Okay, så bruger jeg NOW. Men hvorfor sætter den stadig en tom dato ind i databasen?

    SQL = "insert into messageboard(author, email, website, topic, body, ip, addeddate, addedtime) values('"
      SQL = SQL & author & "','"
      SQL = SQL & email & "','"
    SQL = SQL & website & "','"
      SQL = SQL & topic & "','"
      SQL = SQL & bodyStr & "','"
    SQL = SQL & NOW() & "','"
    SQL = SQL & NOW() & "','"
Avatar billede hmortensen Nybegynder
27. maj 2005 - 16:37 #4
Hvorfor ik nøjes med et felt til tid og dato.
Avatar billede marui Nybegynder
27. maj 2005 - 16:39 #5
Det kunne jeg også. Så kan jeg jo bare bruge timestamp(14)

Men er der ikke ulemper ved dette `?
Avatar billede hmortensen Nybegynder
27. maj 2005 - 16:40 #6
Nej, DATETIME som jeg skrev i mit første indlæg.
Avatar billede marui Nybegynder
27. maj 2005 - 16:52 #7
Okay så bruger jeg DATETIME. Men hvorfor sætter den så følgende ind i databasen:
0000-00-00 00:00:00

Når jeg bruger:
SQL = SQL & NOW() & "','"
Avatar billede hmortensen Nybegynder
27. maj 2005 - 16:56 #8
Fordi NOW() er en SQL kommando og ikke ASP, og skal derfor inden for "" og uden '' om.
Avatar billede marui Nybegynder
27. maj 2005 - 16:59 #9
Okay, hvis den så ikke skal se sådan herud, hvordan skal den så se ud:
    SQL = SQL & "NOW()"
Avatar billede hmortensen Nybegynder
27. maj 2005 - 17:05 #10
SQL = SQL & bodyStr & "',"
SQL = SQL & "NOW()","
Avatar billede marui Nybegynder
27. maj 2005 - 17:10 #11
Den virker ikke. Det er åbenbart uafsluttet kode:
SQL = SQL & "NOW()","
Avatar billede hmortensen Nybegynder
27. maj 2005 - 17:15 #12
Det passer heller ikke sammen i den kode stump du har vist.

8 felter, og du forsøger at sætte 7 ind.

SQL = "INSERT INTO messageboard (author, email, website, topic, body, ip, dato) VALUES ('"&author&"', '"&email&"', '"&website&"', '"&topic&"', '"&bodyStr&"', '"&ip&"', NOW())"

Går ud fra at din ip variabel hedder ip, og dit dato felt hedder dato.
Avatar billede marui Nybegynder
27. maj 2005 - 17:30 #13
Denne fejl får jeg så:

Error Type:
ADODB.Connection.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '83.73.66.68')' at line 1
Avatar billede hmortensen Nybegynder
27. maj 2005 - 17:33 #14
Prøv lige at udskrive din SQL sætning, og post den her:
response.write SQL
Avatar billede thesurfer Nybegynder
27. maj 2005 - 17:41 #15
prøv: ... ip & "', #" & now() & "#)"
Avatar billede hmortensen Nybegynder
27. maj 2005 - 17:43 #16
thesurfer:
## er det ikke til access ?
Avatar billede marui Nybegynder
27. maj 2005 - 17:54 #17
Virker nu. blot en lille dum fejl fra min side :)
SQL = "INSERT INTO messageboard (author, email, website, topic, body, ip, added) VALUES ('"&author&"', '"&email&"', '"&website&"', '"&topic&"', '"&bodyStr&"', '"& Request.ServerVariables("REMOTE_ADDR")&"', NOW())"

Sidste spørgsmål! (Hæver point)
Når jeg nu ikke kan bruge "formatdatetime" i MySQL, hvordan skal jeg så få formateret mine datoer?

Før skrev jeg jo bare:
formatdatetime(RS("added"),1) & "  kl. " & formatdatetime(RS("added"),4)

Og når jeg så skulle udskrive en dato som så sådan her ud 24.05.2005, så angivede jeg det bare med en format i mit SQL statement.

Men det kan jeg jo ikke mere, så kan i fortælle mig hvordan jeg formaterer det nu, især hvis jeg skal bruge følgende datoformat efterfulgt af tidspunktet 24.05.2005  ?
Avatar billede hmortensen Nybegynder
27. maj 2005 - 17:57 #18
Dertil bruger du mySQL indbyggede funktion DATE_FORMAT()

SELECT felt, felt2, DATE_FORMAT(datofelt, '%d.%m.%Y %H:%i.%s') AS dato FROM tabel
Avatar billede marui Nybegynder
27. maj 2005 - 18:19 #19
Perfekt!

Hvis du lige gider at smide et svar, samt et link til noget MySQL dokumentation vedr. datoer, så er pointene dine :)
Avatar billede hmortensen Nybegynder
27. maj 2005 - 19:15 #20
Har ikke lige noget dokumentation til mySQl, men her http://dk2.php.net/date kan du se nogle af de forskellige muligheder (de fleste skulle gerne virke til mySQL også).
Avatar billede marui Nybegynder
27. maj 2005 - 19:52 #21
Smukt - virker Perfekt!

Modtager af point: Hmortensen

Tak for hjælp
Avatar billede fixxxer Nybegynder
29. maj 2005 - 16:45 #22
Jeg vil lige pointere at mit svar var det rigtige... men pyt :)

(også postet 27/05-2005 16:30:04)

    SQL = "insert into messageboard(author, email, website, topic, body, ip, addeddate, addedtime) values('"
      SQL = SQL & author & "','"
      SQL = SQL & email & "','"
    SQL = SQL & website & "','"
      SQL = SQL & topic & "','"
      SQL = SQL & bodyStr & "','"
    SQL = SQL & "NOW(), "
    SQL = SQL & "NOW())"
Avatar billede hmortensen Nybegynder
29. maj 2005 - 18:38 #23
fixxxer, kom an på felt typen. Og som sagt, var der ingen grund til at bruge to felter her :)
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