SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.11.2011 15:07:36

svetlii88
Участник
Зарегистрирован: 13.11.2011
Сообщений: 5

вопрос по типу DATE

Здравствуйте, помогите пж. Есть таблица Dan. В таблице имеются поля POL и DATA_R, по ним и необходим запрос. Суть запроса: вывести все данные о женщинах, которые младше 50 лет.
Преподаватель сказал что необходимо прописать условие через функцию которая выводит текущую дату, я написала: SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';
Преподаватель сказал, что этот запрос неверный. Помогите пожалуйста.

Неактивен

 

#2 13.11.2011 15:34:48

kravcneger
Участник
Зарегистрирован: 10.06.2011
Сообщений: 8

Re: вопрос по типу DATE

В каком точном формате хранится возраст ?
Скорее всего требуется преобразовать формат даты примерно так

data_r > Date_Format(CURDATE()- INTERVAL 50 YEAR,'Y%h%m')


вместо "Y%h%m"  укажи правильный формат соответствующий  data_r

Неактивен

 

#3 13.11.2011 15:38:33

svetlii88
Участник
Зарегистрирован: 13.11.2011
Сообщений: 5

Re: вопрос по типу DATE

kravcneger написал:

В каком точном формате хранится возраст ?
[/syntax]

data_r хранится в формате гггг-мм-дд

Неактивен

 

#4 13.11.2011 15:42:13

kravcneger
Участник
Зарегистрирован: 10.06.2011
Сообщений: 8

Re: вопрос по типу DATE

%Y%m%d

Неактивен

 

#5 13.11.2011 15:57:59

svetlii88
Участник
Зарегистрирован: 13.11.2011
Сообщений: 5

Re: вопрос по типу DATE

SELECT * FROM dan WHERE data_r>(Date_Format(CURDATE()- INTERVAL 50 YEAR,'Y%h%m') AND pol='ж';
это будет так?

Неактивен

 

#6 13.11.2011 16:13:47

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: вопрос по типу DATE

SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';

Запрос написан правильно. Ваш преподаватель либо сам не знает SQL, либо хочет чтоб вы написали в каком то другом виде.
Но тут важно чтоб поле data_r было типа "DATE" или "DATETIME"
Если оно у вас текстовое, тогда нужно преобразовывать с помощью фукции STR_TO_DATE

Неактивен

 

#7 13.11.2011 16:28:01

svetlii88
Участник
Зарегистрирован: 13.11.2011
Сообщений: 5

Re: вопрос по типу DATE

evgeny написал:

SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';

Но тут важно чтоб поле data_r было типа "DATE" или "DATETIME"
Если оно у вас текстовое, тогда нужно преобразовывать с помощью фукции STR_TO_DATE


Прикрепленные файлы:
Attachment Icon сканирование0004.jpg, Размер: 303,765 байт, Скачано: 326

Неактивен

 

#8 13.11.2011 16:29:47

svetlii88
Участник
Зарегистрирован: 13.11.2011
Сообщений: 5

Re: вопрос по типу DATE

это то как было и  потом исправила

Как по-другому то можно этот запрос написать?


Прикрепленные файлы:
Attachment Icon сканирование0005.jpg, Размер: 378,218 байт, Скачано: 331

Неактивен

 

#9 13.11.2011 17:20:01

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: вопрос по типу DATE

Тип поля data_r "date", правильно у Вас запрос составлен, вот прямое доказательство:

Код:

mysql>  create table dan(surname varchar(80), data_r date,pol char);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dan values('Ivanova','1950-01-01','ж'),('Petrova','1960-01-01','ж'),('Sidorova','1970-01-01','ж'),('Averyanova','1980-01-01','ж');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql>  select * from dan;
+------------+------------+------+
| surname    | data_r     | pol  |
+------------+------------+------+
| Ivanova    | 1950-01-01 | ж   |
| Petrova    | 1960-01-01 | ж   |
| Sidorova   | 1970-01-01 | ж   |
| Averyanova | 1980-01-01 | ж   |
+------------+------------+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';
+------------+------------+------+
| surname    | data_r     | pol  |
+------------+------------+------+
| Sidorova   | 1970-01-01 | ж   |
| Averyanova | 1980-01-01 | ж   |
+------------+------------+------+
2 rows in set (0.00 sec)

Как видим, выбираются только женщины моложе 50 лет.

Если преподаватель будет настаивать на том, что запрос неправильный - уточните что именно неправильно.
Запрос по-другому написать - да можно, но зачем? Рассмотреный вариант запроса самый логичный.

Отредактированно deadka (14.11.2011 00:58:55)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson