Avatar billede rthuls Nybegynder
05. november 2004 - 09:41 Der er 13 kommentarer og
3 løsninger

datetime vs. unix timestamp

Når jeg har skulle gemme et tidspunkt har jeg altid brugt time(), fordi så kunne jeg altid formatere tiden lige så tosset jeg havde lyst  til senere.

Nu ser jeg så at der også er noget der hedder datetime. Hvordan benytter man den?

Mit problem er at jeg gerne vil checke min database og se hvormange posts der har været de sidste 12 måneder, fordelt pr. måned.

Altså f.eks:
Jan (5)
Feb (3)
Mar (7)
osv.

Det aner jeg ikke hvordan jeg kan gøre med time(), derfor tænkte jeg at det måske var lettere med datetime?

Hvordan ville i gøre? Jeg er lidt lost her :o)
Avatar billede Slettet bruger
05. november 2004 - 09:51 #1
Vi snakker vel MySQL?

Ja, det er lettere med DATETIME, for der kan MySQL forstå indholdet.

Når du henter, kan du bede om UNIX_TIMESTAMP(datofelt) i stedet for bare datofelt, så laver den en DATETIME om til ... gæt selv. ;-)
Avatar billede rthuls Nybegynder
05. november 2004 - 10:04 #2
Yes, det er MySQL :)

Hvornår få jeg proppet noget ind i datofeltet til at starte med?

Kan jeg så lave en smart SQL-sætning, hvor man vælger alle rækker hvor måneden f.eks er lig med 5?
Avatar billede jensgram Nybegynder
05. november 2004 - 10:45 #3
Jeg benytter et sted:

$query = mysql_query("SELECT COUNT(*) AS antal, MONTH(tidspunkt) AS maaned, YEAR(tidspunkt) AS aar FROM nyheder GROUP BY DATE_FORMAT(tidspunkt, '%Y/%m') DESC");

Du kunne så have sagt:

$query = mysql_query("SELECT COUNT(*) AS antal, YEAR(tidspunkt) AS aar FROM nyheder WHERE MONTH(tidspunkt) == 5 GROUP BY DATE_FORMAT(tidspunkt, '%Y/%m') DESC");

For at vælge dem i måned 5 (alle år)
Avatar billede detox Nybegynder
05. november 2004 - 10:47 #4
MySQL har osse funktioner som fx MONTH(), YEAR() og DATE_FORMAT, så du kan forespørge, kombinere og gruppere efter snart sagt alt. Fx:

SELECT COUNT(*) AS antal, MONTH(dato_felt) AS maaned  FROM tabel WHERE dato_felt > DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY maaned ORDER BY dato_felt
Avatar billede detox Nybegynder
05. november 2004 - 10:53 #5
jensgram -> Arh ja, nok en god ide at have 'aar' med i forespørgslen, men jeg synes du mangler en: ORDER BY.
Avatar billede jensgram Nybegynder
05. november 2004 - 11:00 #6
detox > Ja, det ser da egentlig sådan ud ;)
Avatar billede rthuls Nybegynder
05. november 2004 - 11:08 #7
Hvor er det smart!
Vil i lægge nogle svar?

Lige et sidste spørgsmål. Når man vil indsætte data i et datetime felt, siger man så bare:
$nu = time();
$sql = ("INSERT INTO tabel (dato) VALUES (FROM_UNIXTIME({$nu}))");
Avatar billede jensgram Nybegynder
05. november 2004 - 11:10 #8
Nej, dette er nemmere:

INSERT INTO tabel (dato) VALUES(NOW())
Avatar billede jensgram Nybegynder
05. november 2004 - 11:10 #9
svar
Avatar billede coderdk Praktikant
05. november 2004 - 12:12 #10
SELECT * FROM tabel WHERE datofelt > DATE_SUB( NOW(), INTERVAL 12 MONTHS );
Avatar billede detox Nybegynder
05. november 2004 - 13:31 #11
coderdk -> øhh..., hvad er det?
Avatar billede Slettet bruger
05. november 2004 - 21:27 #12
Lidt underligt at coderdk ikke selv svarede, men det var den betingelse, der skulle til, for at udvælge poster, som er højst 12 måneder gamle. Det blev der også bedt om i det oprindelige spørgsmål.
Avatar billede coderdk Praktikant
06. november 2004 - 13:11 #13
Hej :) Den var skrevet lidt hurtigt - Og jeg er først lige "kommet tilbage" til spørgsmålet - Ja, som sandbox skriver... Men har dog også lige set at detox' svar "05/11-2004 10:47:29" gør det samme, og så det der ellers skulle til i spørgsmålet ;)

Mere hjælp en hvad vi alle har skrevet, ville være:
  http://www.w3schools.com/sql/sql_groupby.asp
  http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html

:)
Avatar billede coderdk Praktikant
06. november 2004 - 13:11 #14
Mere hjælp end*
Avatar billede rthuls Nybegynder
06. november 2004 - 13:27 #15
Tak for den gode hjælp allesammen!
Avatar billede jensgram Nybegynder
07. november 2004 - 17:58 #16
takker for points - og sorry at jeg ikke havde set den med de 12 måneder ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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