---
title: "veckan ska börjar på en måndag och inte söndag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/181947-veckan-ska-börjar-på-en-måndag-och-inte-söndag"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "swingman"
published: "2010-01-09T22:45:56.000Z"
updated: "2010-01-10T01:14:28.000Z"
replies: 9
views: 841
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/181947-veckan-ska-börjar-på-en-måndag-och-inte-söndag"
---

# veckan ska börjar på en måndag och inte söndag

## #1 — swingman, 2010-01-09T22:45Z

Hej... 
med följande sql sats så får jag data för pågående vecka men den börjar på söndag och slutar på lördag. Kan nån hjälpa mig modifiera sql satsen så att jag få ut data från en måndag till söndag istället.

```
SELECT d.name_,i.key_,i.start_,i.end_
FROM   jbpm_processdefinition d, jbpm_processinstance i
where (d.id_ = i.processdefinition_)
and (yearweek(i.end_) =yearweek(CURRENT_TIMESTAMP)
OR (yearweek(i.start_) = yearweek(CURRENT_TIMESTAMP) ) )
```

Permalänk: https://www.webforum.nu/p/181947

## #2 — erciz, 2010-01-09T22:51Z

Det är bara en parameter till YEARWEEK(), kolla i MySQL-manualen. Jag tror att det ska vara nåt liknande: 

```
YEARWEEK(CURRENT_TIMESTAMP, 1)
```

Du måste naturligtvis skicka med den parametern på alla ställen du använder YEARWEEK().

EDIT:
Kolla <http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_yearweek>
och <http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_week>

Det ska vara 

```
YEARWEEK(CURRENT_TIMESTAMP, 1)
```

Permalänk: https://www.webforum.nu/p/2222408

## #3 — swingman, 2010-01-09T23:19Z

tyvärr fattar jag inte riktigt...jag gjorde om så här men då får jag data från föregående vecka som började på söndag den 3:e jan -Lördag den 9:e jan. Jag vill få data från måndag till söndag och inte söndag till lördag!
SELECT d.name\_,i.key\_,i.start\_,i.end\_
FROM   jbpm_processdefinition d, jbpm_processinstance i
where (d.id\_ = i.processdefinition\_)
and (yearweek(i.end\_) =yearweek(CURRENT_TIMESTAMP,1)
OR (yearweek(i.start\_) = yearweek(CURRENT_TIMESTAMP,1) ) );

Permalänk: https://www.webforum.nu/p/2222412

## #4 — erciz, 2010-01-09T23:32Z

> **[erciz skrev:](https://www.webforum.nu/p/1493873)**
>
> Du måste naturligtvis skicka med den parametern på alla ställen du använder YEARWEEK().

Jag citerar mig själv.
I din kod har du glömt parametern på två ställen. Det är därför du får fel.

Permalänk: https://www.webforum.nu/p/2222415

## #5 — swingman, 2010-01-09T23:53Z

jag kopierade in fel kod....jag har testat med som du menar utan att lyckas

SELECT d.name\_,i.key\_,i.start\_,i.end\_
FROM   jbpm_processdefinition d, jbpm_processinstance i
where (d.id\_ = i.processdefinition\_)
and (yearweek(i.end\_,1) =yearweek(CURRENT_TIMESTAMP,1)
OR (yearweek(i.start\_,1) = yearweek(CURRENT_TIMESTAMP,1) ) );

Permalänk: https://www.webforum.nu/p/2222421

## #6 — swingman, 2010-01-09T23:58Z

har ett annat problem också...
med följande kod får jag ett fel meddelande:Truncated incorrect time value: '7296:00:00'

select name\_,d.id\_,
sec_to_time(min(time_to_sec(TIMEDIFF(end\_,start\_)))) as minduration,
sec_to_time(max(time_to_sec(TIMEDIFF(end\_,start\_)))) as maxduration,
sec_to_time(avg(time_to_sec(TIMEDIFF(end\_,start\_))))as avgduration
from jbpm_processdefinition d, jbpm_processinstance i
where d.id\_=i.processdefinition\_ and end\_ is not null;

jag tror att det beror på att det blir för många decimal punkter men jag vet inte hur jag ska fixa det!

Permalänk: https://www.webforum.nu/p/2222422

## #7 — erciz, 2010-01-10T00:09Z

Det här borde lösa ditt problem i första inlägget. AND istället för OR.

```
SELECT d.name_,i.key_,i.start_,i.end_
FROM   jbpm_processdefinition d, jbpm_processinstance i
where (d.id_ = i.processdefinition_)
AND yearweek(i.end_,1) =yearweek(CURRENT_TIMESTAMP,1)
AND yearweek(i.start_,1) = yearweek(CURRENT_TIMESTAMP,1)
```

Det kan ju hända att du har andra problem med koden också. Men detta borde göra att du får ut data för en vecka.

Permalänk: https://www.webforum.nu/p/2222423

## #8 — nitro2k01, 2010-01-10T00:30Z

Ang. ditt andra fel: sec_to_time (eller rättare sagt datatypen TIME) kan bara hantera upp till 838 timmar. 7296 är alltså på tok för långt. Prova att selecta max(TIMEDIFF(end\_,start\_)) i den frågan och se om du får samma fel.

Permalänk: https://www.webforum.nu/p/2222425

## #9 — swingman, 2010-01-10T01:05Z

i första frågan....jag vill absolute inte ha AND då det betyder att båda villkoren måste stämma. Jag har dock provat som du säger men det hjälper faktiskt inte.

i den andra frågan, så får jag fortf. samma fel när jag selecta med 
select max(TIMEDIFF(end\_,start\_)) 

Men tack för att du försökt hjälpa mig ändå!

Permalänk: https://www.webforum.nu/p/2222429

## #10 — erciz, 2010-01-10T01:14Z

> **[swingman skrev:](https://www.webforum.nu/p/1493894)**
>
> i första frågan....jag vill absolute inte ha AND då det betyder att båda villkoren måste stämma. Jag har dock provat som du säger men det hjälper faktiskt inte.
> 
> i den andra frågan, så får jag fortf. samma fel när jag selecta med 
> select max(TIMEDIFF(end\_,start\_)) 
> 
> Men tack för att du försökt hjälpa mig ändå!

Men det är lite svårt att veta hur AND-villkoret ska vara när man inte vet hur tabellen ser ut.

Permalänk: https://www.webforum.nu/p/2222432

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/181947-veckan-ska-börjar-på-en-måndag-och-inte-söndag
