MySQL - крайне странные непонятки с логикой: select,тип date

User avatar
Pukite
Уже с Приветом
Posts: 257
Joined: 05 Apr 2003 17:06
Location: Европа :: Латвия

MySQL - крайне странные непонятки с логикой: select,тип date

Post by Pukite »

Привет, коллеги!

Имеем таблицу tabula и в ней множество столбцов, в том числе столбец datums, определенный как date not null, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как select * from tabula where datums>='2003-10-20' and datums-'2003-10-21', выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: MySQL - крайне странные непонятки с логикой: select,тип date

Post by A. Fig Lee »

Pukite wrote:Привет, коллеги!

Имеем таблицу tabula и в ней множество столбцов, в том числе столбец datums, определенный как date not null, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как select * from tabula where datums>='2003-10-20' and datums-'2003-10-21', выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?


select * from tabula where datums>='2003-10-20' and datums<='2003-10-21'

:pain1:
Верить нельзя никому - даже себе. Мне - можно!
lozzy
Уже с Приветом
Posts: 2435
Joined: 12 Jun 2001 09:01

Re: MySQL - крайне странные непонятки с логикой: select,тип date

Post by lozzy »

Pukite wrote:Привет, коллеги!

Имеем таблицу tabula и в ней множество столбцов, в том числе столбец datums, определенный как date not null, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как select * from tabula where datums>='2003-10-20' and datums-'2003-10-21', выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?


Да вроде все так, если в запросе таки стоит не знак минус а равно. Можно попробовать еще даты указывать в формате 20031020 как число, а не строку.
Steel helmet protects your teeth from the morning to the evening.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: MySQL - крайне странные непонятки с логикой: select,тип date

Post by A. Fig Lee »

lozzy wrote:
Pukite wrote:Привет, коллеги!

Имеем таблицу табула и в ней множество столбцов, в том числе столбец датумс, определенный как дате нот нулл, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как селецт * фром табула вхере датумс>=ь2003-10-20ь анд датумс-ь2003-10-21ь, выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?


Да вроде все так, если в запросе таки стоит не знак минус а равно. Можно попробовать еще даты указывать в формате 20031020 как число, а не строку.

Ето лучше, только все равно строку.
Верить нельзя никому - даже себе. Мне - можно!
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by zVlad »

Pukite wrote:Привет, коллеги!

Имеем таблицу tabula и в ней множество столбцов, в том числе столбец datums, определенный как date not null, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как select * from tabula where datums>='2003-10-20' and datums-'2003-10-21', выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?


Pukite, меняйте MySQL на DB2 и Вы сможете написать:

select * from tabula where datums between '2003-10-20' and '2003-10-21'

и получить правильный ответ. А также Вы сможете писать, например:

select * from tabula where datums>='2003-10-20' and CURRENT DATE + 1 MONTHS

и многое другое - полезное для дат и не только.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by Dmitry67 »

zVlad wrote: Pukite, меняйте MySQL на DB2 и Вы сможете написать:


Pukite, меняйте, wVlad Вам выплатит разницу в цене :)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
adb
Уже с Приветом
Posts: 9275
Joined: 14 Dec 2001 10:01
Location: Российская Федерация

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by adb »

zVlad wrote: Pukite, меняйте MySQL на DB2 и Вы сможете написать:

select * from tabula where datums between '2003-10-20' and '2003-10-21'

и получить правильный ответ. А также Вы сможете писать, например:

select * from tabula where datums>='2003-10-20' and CURRENT DATE + 1 MONTHS

и многое другое - полезное для дат и не только.


Разве between не входит в стандарт SQL-92? PostgreSQL это вполне прожовывает. Я думаю и MySql справится (похуже конечно -)).
lozzy
Уже с Приветом
Posts: 2435
Joined: 12 Jun 2001 09:01

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by lozzy »

zVlad wrote:
Pukite wrote:Привет, коллеги!

Имеем таблицу tabula и в ней множество столбцов, в том числе столбец datums, определенный как date not null, там хранятся разные даты. Задача: выбрать из таблицы все записи между 2003-10-20 и 2003-10-21, записываю как select * from tabula where datums>='2003-10-20' and datums-'2003-10-21', выбираются строки с совсем другими значениями этого столбца :(

Что я делаю не так?


Pukite, меняйте MySQL на DB2 и Вы сможете написать:

select * from tabula where datums between '2003-10-20' and '2003-10-21'

и получить правильный ответ. А также Вы сможете писать, например:

select * from tabula where datums>='2003-10-20' and CURRENT DATE + 1 MONTHS


В MySQL такое тоже есть, только синтаксис немного другой.
Steel helmet protects your teeth from the morning to the evening.
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by zVlad »

Dmitry67 wrote:
zVlad wrote: Pukite, меняйте MySQL на DB2 и Вы сможете написать:


Pukite, меняйте, wVlad Вам выплатит разницу в цене :)


Everything has its own price.
Dmitry67, what do you think is a price for wrong results from requests to database?
My opinion is that Pukite will have a profit even though cost of MySQL = $0.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Человек спросил про mySql
Предположим она бы послушалась Ваших советом
Как бы Вы отнеслись к человеку который приходит в команду и говорит - не то вы делаете. Код который уже написан надо переделать под (C#, MSSQL, you-name-it). А потом все заново перетестировать :)

Потом откуда Вы знаете что за задача стоит ? Одно дело советовать отказаться от mySQL если пишется финансовая система банка :), и совсем другое - допустим WEB-форум который еще и заявляется бесплатным :)

В математической школе нам все время повторяли "прежде чем решать задачу, иногда бывает полезно ознакомится с ее уловием". А то в Вас явно говорил маркетолог а не DBA.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
lozzy
Уже с Приветом
Posts: 2435
Joined: 12 Jun 2001 09:01

Re: MySQL - крайне странные непонятки с логикой: select,тип

Post by lozzy »

zVlad wrote: Everything has its own price.
Dmitry67, what do you think is a price for wrong results from requests to database?
My opinion is that Pukite will have a profit even though cost of MySQL = $0.


It is not a wrong result. In most cases it is called 'кривые руки'. And last, but not least, MySQL commercial license costs $400 ;)
Steel helmet protects your teeth from the morning to the evening.

Return to “Вопросы и новости IT”