SQL заявка не изважда резултат по избрана седмица

C++ JAVA
Post Reply
User avatar
Ticketa
Турист
Турист
Posts: 480
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 23
Location: in /root
Contact:

SQL заявка не изважда резултат по избрана седмица

Post by Ticketa » Fri Nov 29, 2019 8:16 pm

Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1573
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Sat Nov 30, 2019 12:07 pm

Ако полето ти е от тип DATE, не би трябвало да са ти нужни такива трансформации - https://www.w3schools.com/sql/func_mysql_week.asp

Пишеш `WHERE WEEK(data) = 47` и толкоз.

User avatar
Ticketa
Турист
Турист
Posts: 480
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 23
Location: in /root
Contact:

Post by Ticketa » Sat Nov 30, 2019 8:56 pm

Полето беше varchar промених го с данните на DATE. Ок. Успешно търся по седмица по твоя пример, обаче имам данни за 2014, 2015, 2016, 2017, 2018, 2019.

Съответно заявката ми изкарва за седмица 47 всички данни за всичките години, а аз искам данните които се извеждат да са за конкретна година тоест - 2019 в момента

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Sun Dec 01, 2019 1:05 am

Както имаш WEEK(), така имаш и YEAR(). На същия принцип можеш да работиш.

chepa
Потребител
Потребител
Posts: 746
Joined: Fri Aug 14, 2009 3:01 pm

Post by chepa » Tue Dec 03, 2019 1:03 pm

SELECT * FROM `table` WHERE WEEK(data) = '47' AND YEAR(data) = 2019?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3277
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 126

Re: SQL заявка не изважда резултат по избрана седмица

Post by dakata__92 » Tue Dec 03, 2019 3:09 pm

Ticketa wrote:Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?
Колега, е как ще ти извежда информация!? На DATE_FORMAT подаваш колона data, която е и запазена дума в SQL. Трябва да я поставиш в кавички за да се интерпретира, като име на колона в таблицата.
[sql]SELECT * FROM `table` WHERE week(DATE_FORMAT(`data`, "%Y-%m-%d"))=47[/sql]

Виж дали така ще ти проработи. При мен заявката работи с моя таблица и колона в нея.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Re: SQL заявка не изважда резултат по избрана седмица

Post by Revelation » Tue Dec 03, 2019 6:02 pm

dakata__92 wrote:
Ticketa wrote:Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?
Колега, е как ще ти извежда информация!? На DATE_FORMAT подаваш колона data, която е и запазена дума в SQL. Трябва да я поставиш в кавички за да се интерпретира, като име на колона в таблицата.
[sql]SELECT * FROM `table` WHERE week(DATE_FORMAT(`data`, "%Y-%m-%d"))=47[/sql]

Виж дали така ще ти проработи. При мен заявката работи с моя таблица и колона в нея.

DATA не е запазена дума в SQL, а е ключова дума.

Ключовите думи не е задължително да се ограждат в кавички. Само резервираните трябва.

Post Reply