/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Mellem to datoer ?
Fra : SpookiePower


Dato : 03-01-08 13:50

Jeg vil gerne sammenligne antallet af indlæg
i min database fra 01.01.2008 til dagsdato(01.03.2008),
med indlæg fra sidste år, i samme periode.
Mit problem er indlægene i 2007.

Min ide til en kode, ser således ud, men den virker
naturligvis ikke -

SELECT *
FROM TReport
WHERE Date BETWEEN '01-01-2007' AND 'DagsDato-2007'


Jeg har dog et problem med datoen. Datoen i mit felt
ser således ud "03-01-2008 06:20:00"
Jeg forestiller mig at jeg skal trække datoen "03-01"
ud af datofeltet og sætte den ind på "DagsDato" i min
SQL sætning, men med funktionerne datevalue og date
får jeg hevet 03-01-2008 ud. Hvordan slipper jeg
for årstallet - hvis det altså er den rigtige måde
at gøre det på ?

Hvad gør jeg her ?


--
My Photo Gallery
www.anothermasterpiece.com

 
 
Jesper Staun Hansen (03-01-2008)
Kommentar
Fra : Jesper Staun Hansen


Dato : 03-01-08 14:44

SpookiePower wrote:
> Jeg vil gerne sammenligne antallet af indlæg
> i min database fra 01.01.2008 til dagsdato(01.03.2008),
> med indlæg fra sidste år, i samme periode.
> Mit problem er indlægene i 2007.
>
> Min ide til en kode, ser således ud, men den virker
> naturligvis ikke -
>
> SELECT *
> FROM TReport
> WHERE Date BETWEEN '01-01-2007' AND 'DagsDato-2007'
>
>
> Jeg har dog et problem med datoen. Datoen i mit felt
> ser således ud "03-01-2008 06:20:00"
> Jeg forestiller mig at jeg skal trække datoen "03-01"
> ud af datofeltet og sætte den ind på "DagsDato" i min
> SQL sætning, men med funktionerne datevalue og date
> får jeg hevet 03-01-2008 ud. Hvordan slipper jeg
> for årstallet - hvis det altså er den rigtige måde
> at gøre det på ?
>
> Hvad gør jeg her ?
>
>
> --
> My Photo Gallery
> www.anothermasterpiece.com

Du kan prøve
WHERE date(now() - interval 1 year) < date_row
Så det man vil det se ud som:
WHERE 03-01-2007 06:20:00 < 03-01-2008 06:20:00 (såfremt man lige
sammenligner med datoen lige nu)

Dog nok ikke helt det du leder efter, så...
WHERE date(CONCAT(YEAR(NOW()),'-01-01 00:00:00')) < date(date_row)
Skulle vist give dig det du vil have.

mysql> select date(CONCAT(YEAR(NOW()),'-01-01 00:00:00'));
+---------------------------------------------+
| date(CONCAT(YEAR(NOW()),'-01-01 00:00:00')) |
+---------------------------------------------+
| 2008-01-01 |
+---------------------------------------------+
1 row in set (0.00 sec)


select CONCAT(YEAR(NOW()),'-01-01 00:00:00');
+---------------------------------------+
| CONCAT(YEAR(NOW()),'-01-01 00:00:00') |
+---------------------------------------+
| 2008-01-01 00:00:00 |
+---------------------------------------+
1 row in set (0.00 sec)

Jesper Staun Hansen (03-01-2008)
Kommentar
Fra : Jesper Staun Hansen


Dato : 03-01-08 19:43


> Jeg har dog et problem med datoen. Datoen i mit felt
> ser således ud "03-01-2008 06:20:00"
> Jeg forestiller mig at jeg skal trække datoen "03-01"
> ud af datofeltet og sætte den ind på "DagsDato" i min
> SQL sætning, men med funktionerne datevalue og date
> får jeg hevet 03-01-2008 ud. Hvordan slipper jeg
> for årstallet - hvis det altså er den rigtige måde
> at gøre det på ?


Og til dette:
SELECT CONCAT(DAYOFMONTH(dato_row),'-',MONTH(dato_row))...
Tror det er lige den letteeste metode jeg kan finde på

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407944
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste