# \[gelöst\] SQL Datumsfeld Select/Update

**URL:** <https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [5. Oktober 2011 um 13:47 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570 "2011-10-05T13:47:39Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [5. Oktober 2011 um 13:47 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570/1 "2011-10-05T13:47:39Z")

</div>

Hey, ich verzweifle gerade mal wieder bei meinem MYSQL Statement. SELECT Anweisung: [code] SELECT active FROM `s_articles` WHERE changetime

---

<div class="post-metadata">

**Author:** ![Marcel\_Gortz](https://avatars.discourse-cdn.com/v4/letter/m/c77e96/32.png) [@Marcel\_Gortz](https://forum.shopware.com/u/Marcel_Gortz)\
**Post date:** [5. Oktober 2011 um 14:01 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570/2 "2011-10-05T14:01:08Z")

</div>

So ging es bei mir: `UPDATE `s_articles` SET `active`=0 WHERE `changetime` = '2011-09-27 15:46:04'`’ Edit: Sorry nicht richtig gelesen! Neue Idee, die Zeit in Unix umwandeln: `SELECT UNIX\_TIMESTAMP(`changetime`) AS changetime\_unix FROM `s_articles` WHERE changetime \< '2011-10-05 10:32:58'` Vielleicht geht es dann besser.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [5. Oktober 2011 um 14:34 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570/3 "2011-10-05T14:34:02Z")

</div>

Zum verzweifeln: SELECT (funktioniert): ` SELECT count(\*) FROM `s_articles` WHERE changetime \< CAST('20111005141924' AS DATETIME) ` UPDATE (funktioniert nicht) [quote] UPDATE `s_articles` SET active=0 WHERE changetime \< CAST(‘20111005141924’ AS DATETIME) [/quote] Woran liegt das?

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [6. Oktober 2011 um 06:23 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570/4 "2011-10-06T06:23:06Z")

</div>

Was willst du denn mit der Query genau erreichen? Wenn du z.B. alle Artikel auf inaktiv setzen möchtest, die in den letzten 30 Tagen nicht bearbeiten worden sind, könntest du das wie folgt machen: UPDATE `s_articles` SET active=0 WHERE changetime \< DATE\_SUB(now(),INTERVAL 30 DAY) Analog dazu, kannst du mit DATE\_SUB und INTERVAL auch andere, erweiterte Szenarien abbilden. Was z.B. auch geht UPDATE `s_articles` SET active=0 WHERE TO\_DAYS(changetime) \< TO\_DAYS(‘Y-m-d H:i:s’) oder: $timestamp = strtotime(‘Y-m-d H:i:s’); UPDATE `s_articles` SET active=0 WHERE UNIX\_TIMESTAMP(changetime) \< $timestamp;

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [6. Oktober 2011 um 07:48 UTC](https://forum.shopware.com/t/gelost-sql-datumsfeld-select-update/4570/5 "2011-10-06T07:48:12Z")

</div>

Problem war, dass die Datensätze schon 0 in der Spalte active stehen hatten. Daher kam als Ergebnis 0 Treffer 🙂 Zur Info: Über das ERP kommen in einem Intervall (10min. glaube ich) Bestandsdaten in einer Liste. Diese wird über die API die betroffen Artikel aktualisieren, alle Artikel welche nicht in der Liste sind, sind nicht verfügbar und sollen auf inactive gesetzte werden. Daher das Update Statement kleiner dem Script-Startdatum 🙂
