Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Udtræk af mySQL-database

2 views
Skip to first unread message

Kurt Hansen

unread,
Dec 22, 2014, 4:54:13 AM12/22/14
to
Vi er, på godt og ondt (mest ondt) 4 personer der opretter nye varer,
retter priser m.m. i en webshop der er baseret på en mySQL-database.

Hvordan kan jeg nemmest lave et udtræk der viser ændringer og
tilføjelser inden for et givent interval, f.eks. i dag, seneste 3 dage
eller seneste uge? I databasen er der i tabellen 'products' to felter
der kan lægges til grund: products_date_added og products_last_modified.

Er det muligt at definere en forespørgsel der imødekommer mit ønske: at
jeg får en liste over de varenumre der er blevet ændret eller oprettet
efter et interval der er valgt af mig?
--
Venlig hilsen
Kurt Hansen

Martin

unread,
Dec 23, 2014, 7:00:51 AM12/23/14
to
SELECT *
FROM products
WHERE
product_added > DATE_SUB(products_date_added, INTERVAL 3 DAYS)
OR
products_last_modified > DATE_SUB(products_last_modifed, INTERVAL 3 DAYS)

Kurt Hansen

unread,
Dec 23, 2014, 11:48:24 AM12/23/14
to
Den 23/12/14 13.00, skrev Martin:
> SELECT *
> FROM products
> WHERE
> product_added > DATE_SUB(products_date_added, INTERVAL 3 DAYS)
> OR
> products_last_modified > DATE_SUB(products_last_modifed, INTERVAL 3
> DAYS)

Det lyder af noget. Det vil jeg teste. Jeg forstår ikke lige det med
SUB, men hvis det virker, kan det jo være lige meget ;-)

> On 12/22/2014 10:54 AM, Kurt Hansen wrote:
>> Vi er, på godt og ondt (mest ondt) 4 personer der opretter nye varer,
>> retter priser m.m. i en webshop der er baseret på en mySQL-database.
>>
>> Hvordan kan jeg nemmest lave et udtræk der viser ændringer og
>> tilføjelser inden for et givent interval, f.eks. i dag, seneste 3 dage
>> eller seneste uge? I databasen er der i tabellen 'products' to felter
>> der kan lægges til grund: products_date_added og products_last_modified.
>>
>> Er det muligt at definere en forespørgsel der imødekommer mit ønske: at
>> jeg får en liste over de varenumre der er blevet ændret eller oprettet
>> efter et interval der er valgt af mig?
>


Arne Vajhøj

unread,
Dec 23, 2014, 9:29:00 PM12/23/14
to
On 12/23/2014 7:00 AM, Martin wrote:
> On 12/22/2014 10:54 AM, Kurt Hansen wrote:
>> Vi er, på godt og ondt (mest ondt) 4 personer der opretter nye varer,
>> retter priser m.m. i en webshop der er baseret på en mySQL-database.
>>
>> Hvordan kan jeg nemmest lave et udtræk der viser ændringer og
>> tilføjelser inden for et givent interval, f.eks. i dag, seneste 3 dage
>> eller seneste uge? I databasen er der i tabellen 'products' to felter
>> der kan lægges til grund: products_date_added og products_last_modified.
>>
>> Er det muligt at definere en forespørgsel der imødekommer mit ønske: at
>> jeg får en liste over de varenumre der er blevet ændret eller oprettet
>> efter et interval der er valgt af mig?

> SELECT *
> FROM products
> WHERE
> product_added > DATE_SUB(products_date_added, INTERVAL 3 DAYS)
> OR
> products_last_modified > DATE_SUB(products_last_modifed, INTERVAL
3 DAYS)

Skal første argument til DATE_SUB være NOW() eller?

Arne


Jørn Andersen

unread,
Dec 26, 2014, 10:37:21 AM12/26/14
to
On Tue, 23 Dec 2014 17:48:24 +0100, Kurt Hansen <ku...@invalid.dk>
wrote:

>Det lyder af noget. Det vil jeg teste. Jeg forstår ikke lige det med
>SUB, men hvis det virker, kan det jo være lige meget ;-)

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html


Good luck,
Jørn

--
Jørn Andersen
http://socialister.dk
http://marxisme.dk

Martin

unread,
Dec 30, 2014, 1:34:25 AM12/30/14
to
Det skal være et DATETIME/DATE felt fra databasen, eller NOW()
Går an på hvad man vil have af resultat

Har man ikke et date felt i databasen men fx et int med et timestamp, så
kan man bruge

FROM_UNIXTIME(integer timestamp felt)
altså
DATE_SUB(FROM_UNIXTIME(integer timestamp felt), INTERVAL 3 DAYS)

har man et felt med et specielt format - fx 30-2014-12 11:24, så kan man
bruge

STR_TO_DATE(dato felt, '%d-%Y-%m %H:%i')
altså
DATE_SUB(STR_TO_DATE(dato felt, '%d-%Y-%m %H:%i'), INTERVAL 3 DAYS)

Arne Vajhøj

unread,
Dec 30, 2014, 9:11:28 AM12/30/14
to
On 12/30/2014 1:34 AM, Martin wrote:
> On 12/24/2014 03:28 AM, Arne Vajhøj wrote:
>> On 12/23/2014 7:00 AM, Martin wrote:
>>> On 12/22/2014 10:54 AM, Kurt Hansen wrote:
>>>> Vi er, på godt og ondt (mest ondt) 4 personer der opretter nye varer,
>>>> retter priser m.m. i en webshop der er baseret på en mySQL-database.
>>>>
>>>> Hvordan kan jeg nemmest lave et udtræk der viser ændringer og
>>>> tilføjelser inden for et givent interval, f.eks. i dag, seneste 3 dage
>>>> eller seneste uge? I databasen er der i tabellen 'products' to felter
>>>> der kan lægges til grund: products_date_added og
>>>> products_last_modified.
>>>>
>>>> Er det muligt at definere en forespørgsel der imødekommer mit ønske: at
>>>> jeg får en liste over de varenumre der er blevet ændret eller oprettet
>>>> efter et interval der er valgt af mig?
>>
>> > SELECT *
>> > FROM products
>> > WHERE
>> > product_added > DATE_SUB(products_date_added, INTERVAL 3 DAYS)
>> > OR
>> > products_last_modified > DATE_SUB(products_last_modifed, INTERVAL
>> 3 DAYS)
>>
>> Skal første argument til DATE_SUB være NOW() eller?
>
> Det skal være et DATETIME/DATE felt fra databasen, eller NOW()
> Går an på hvad man vil have af resultat

Min pointe er at:

products_last_modified > DATE_SUB(products_last_modifed, INTERVAL 3 DAYS)

vel altid er sand.

(jeg forudsætter at det manglende 'i' er en slag fejl og ikke en
antagelse om et meget lusket tabel design)

Arne

Martin

unread,
Jan 5, 2015, 4:30:45 AM1/5/15
to
Ahh, ja jeg ser... hvad du mener nu.

product_added > DATE_SUB(CURDATE(), INTERVAL 3 DAYS)
OR
products_last_modified > DATE_SUB(CURDATE(), INTERVAL 3 DAYS)

skal det naturligvis være
0 new messages