ortick
Новичок
Поле DATE и нулевые дни и месяцы, сортировка
Имеем данные о выпуске, скажем, каких-либо товаров.
В базе у нас поле DATE (0000-00-00).
На некоторые товары у нас есть данные полные, т.е. день, месяц, год, на некоторые только месяц, а на остаток только год.
Сейчас у нас в базе встречаются данные вида:
2009-10-10 - это полные данные
2009-10-00 - это данные с неизвестным днем
2009-00-00 - это данные, где известны только года
При выводе мы проверяем не нулевая ли одна из позиций и показываем на основе данных вот так (на примере вышеуказанного):
10 октября 2009г.
октябрь 2009г.
2009г.
Так вот в чем вопрос, при сортировке нам нужно выводить данные в порядке:
1. известен день, месяц, год
2. известен месяц, год
3. известен год.
т.е. опять таки для указанного примера должно быть:
1. 2009-10-10
2. 2009-10-15
3. 2009-10-00 (!!!)
4. 2009-11-01
5. 2009-12-10
6. 2009-12-00 (!!!)
7. 2009-00-00
8. 2010-01-01
9. 2010-01-00 (!!!)
10. 2010-00-00
ну и т.д.
при простой сортировке ORDER BY date
получается так:
3. 2009-10-00 (!!!)
1. 2009-10-10
2. 2009-10-15
4. 2009-11-01
6. 2009-12-00 (!!!)
5. 2009-12-10
7. 2009-00-00
9. 2010-01-00 (!!!)
8. 2010-01-01
10. 2010-00-00
т.е. нулевые идет первые, что и понятно по логике (0,1,2...9)
можно ли как-то сделать чтобы сортировка шла по нужному нам порядку? (1-ый вариант).
Спасибо за любые наводки.
Имеем данные о выпуске, скажем, каких-либо товаров.
В базе у нас поле DATE (0000-00-00).
На некоторые товары у нас есть данные полные, т.е. день, месяц, год, на некоторые только месяц, а на остаток только год.
Сейчас у нас в базе встречаются данные вида:
2009-10-10 - это полные данные
2009-10-00 - это данные с неизвестным днем
2009-00-00 - это данные, где известны только года
При выводе мы проверяем не нулевая ли одна из позиций и показываем на основе данных вот так (на примере вышеуказанного):
10 октября 2009г.
октябрь 2009г.
2009г.
Так вот в чем вопрос, при сортировке нам нужно выводить данные в порядке:
1. известен день, месяц, год
2. известен месяц, год
3. известен год.
т.е. опять таки для указанного примера должно быть:
1. 2009-10-10
2. 2009-10-15
3. 2009-10-00 (!!!)
4. 2009-11-01
5. 2009-12-10
6. 2009-12-00 (!!!)
7. 2009-00-00
8. 2010-01-01
9. 2010-01-00 (!!!)
10. 2010-00-00
ну и т.д.
при простой сортировке ORDER BY date
получается так:
3. 2009-10-00 (!!!)
1. 2009-10-10
2. 2009-10-15
4. 2009-11-01
6. 2009-12-00 (!!!)
5. 2009-12-10
7. 2009-00-00
9. 2010-01-00 (!!!)
8. 2010-01-01
10. 2010-00-00
т.е. нулевые идет первые, что и понятно по логике (0,1,2...9)
можно ли как-то сделать чтобы сортировка шла по нужному нам порядку? (1-ый вариант).
Спасибо за любые наводки.