# Badge per post creati tra le 1:00 e le 5:00

**URL:** https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826
**Category:** Development
**Tags:** badges
**Created:** [7 Febbraio 2021, 10:41pm UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826 "2021-02-07T22:41:52Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [7 Febbraio 2021, 10:41pm UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/1 "2021-02-07T22:41:52Z")

</div>

Temo di essermi affezionato a questi badge 🥰  
Quindi questo verrà assegnato agli utenti che hanno creato post tra le 1:00 e le 5:00, aggiornato quotidianamente.  
Ma purtroppo non ho idea di come selezionare quell’intervallo. Qualsiasi aiuto è apprezzato.

```
SELECT user_id, current_timestamp granted_at 
FROM badge_posts p  
WHERE p.created_at > CURRENT_DATE /* Come fare un BETWEEN '1:00' e '5:00' ? */ 
GROUP BY user_id 
HAVING count(*) >= 100

```

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/7/57fd86e7aeb83267f848f57b6567d11b3021c1df.png)

---

<div class="post-metadata">

### Author: ![michebs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michebs/32/190102_2.png) [@michebs](https://meta.discourse.org/u/michebs)
#### Post date: [8 Febbraio 2021, 9:42am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/2 "2021-02-08T09:42:40Z")

</div>

È possibile filtrare come segue:

```sql
SELECT 
    user_id, 
    current_timestamp granted_at 
FROM badge_posts p  
WHERE p.created_at::time BETWEEN '01:00' AND '05:00'
GROUP BY user_id 
HAVING count(*) >= 100

```

Spero che questo sia d’aiuto.

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [8 Febbraio 2021, 10:20am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/3 "2021-02-08T10:20:56Z")

</div>

Grazie mille per il tuo aiuto. Ho provato il tuo esempio, ma non viene assegnato alcun badge nell’anteprima. Sono le 11:17 qui e ho modificato l’orario nel tuo esempio tra le 10:00 e le 13:00, creando un argomento e una risposta di prova, ma non appare nulla. Ho anche provato:

```
SELECT 
    user_id, 
    current_timestamp granted_at 
FROM badge_posts p  
WHERE p.created_at:: time >= '10:00:00' or p.created_at:: time < '13:00:00' 
GROUP BY user_id 
HAVING count(*) >= 100

```

Eppure non appare nulla 🤔

---

<div class="post-metadata">

### Author: ![michebs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michebs/32/190102_2.png) [@michebs](https://meta.discourse.org/u/michebs)
#### Post date: [8 Febbraio 2021, 10:32am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/4 "2021-02-08T10:32:25Z")

</div>

Il database registra l’orario in GMT+0, quindi devi aggiungere la differenza di fuso orario al tuo fuso. Se mi dici il tuo fuso orario, posso adattarlo per te.

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [8 Febbraio 2021, 10:36am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/5 "2021-02-08T10:36:16Z")

</div>

Perfetto. È Europe/Brussels, GMT +01:00.

---

<div class="post-metadata">

### Author: ![michebs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michebs/32/190102_2.png) [@michebs](https://meta.discourse.org/u/michebs)
#### Post date: [8 Febbraio 2021, 10:46am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/6 "2021-02-08T10:46:47Z")

</div>

Non stai ricevendo il badge perché hai aggiunto il vincolo `HAVING count(*) >= 100`, quindi potrai ottenere il badge solo se effettui più di 100 post in quell’intervallo di tempo.

```sql
SELECT 
    user_id, 
    current_timestamp granted_at 
FROM badge_posts p  
WHERE p.created_at::time BETWEEN '02:00' AND '06:00'
GROUP BY user_id 
HAVING count(*) >= 100

```

---

<div class="post-metadata">

### Author: ![Matze](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/matze/32/208654_2.png) [@Matze](https://meta.discourse.org/u/Matze)
#### Post date: [8 Febbraio 2021, 10:48am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/7 "2021-02-08T10:48:18Z")

</div>

A proposito, bel design del badge: è un SVG stilizzato con CSS o un’immagine basata su pixel?

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [8 Febbraio 2021, 11:05am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/8 "2021-02-08T11:05:45Z")

</div>

Mamma mia, hai ragione, me ne ero dimenticato. Funziona. Se non chiedo troppo, è possibile basare quel controllo orario sull’ora scelta dall’utente nel suo profilo? Altrimenti, il forum sarà pieno di distintivi “Watchmen” 😄 (per le persone che vivono fuori dall’Europa, ecc.). Grazie mille!

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [8 Febbraio 2021, 11:09am UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/9 "2021-02-08T11:09:44Z")

</div>

Realizzato in Photoshop e Figma, non con CSS. Presto pubblicherò l’URL su questo forum, non appena avrò completato il design e tutti i badge.

---

<div class="post-metadata">

### Author: ![michebs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michebs/32/190102_2.png) [@michebs](https://meta.discourse.org/u/michebs)
#### Post date: [8 Febbraio 2021, 7:41pm UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/10 "2021-02-08T19:41:30Z")

</div>

> [@cosdesign](#):
>
> è possibile basare quel controllo dell’orario sull’orario scelto dall’utente nel suo profilo?

Considerando il fuso orario dell’utente, la query apparirà così:

```sql
WITH users_timezone AS (
    SELECT 
        user_id, 
        CASE WHEN utc_offset IS NULL THEN '00:00:00' 
             ELSE utc_offset END
    FROM user_options uo
    LEFT JOIN pg_timezone_names pt ON uo.timezone = pt.name
)

SELECT 
    p.user_id,
    current_timestamp granted_at
FROM badge_posts p  
INNER JOIN users_timezone ut ON ut.user_id = p.user_id
WHERE (p.created_at+ut.utc_offset)::time BETWEEN '01:00' AND '05:00'
GROUP BY p.user_id 
HAVING count(*) >= 100

```

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [8 Febbraio 2021, 7:46pm UTC](https://meta.discourse.org/t/badge-for-posts-created-between-1-am-and-5-am/178826/11 "2021-02-08T19:46:36Z")

</div>

Grazie mille! 😊
