Обрезка MySQL и строка на сегодняшний день в одном запросе - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь сделать некоторые значения vchar доступными для поиска по дате.

Строки, с которыми мне приходится работать, выглядят так:

1/7/2006 12:45:24:00

1/7/2006 1:18:36 AM

1/7/2006 1:21:43

1/7/2006 1:32: 09:00

3/30/2006 12:32:10

3/30/2006 1:19:30

3/30/2006 1:20:44 PM

Итак, давайте сначала избавимся от AM .. PHPMyAdmin SQL-запрос:

 SELECT  trim('AM'  FROM  `orderdate`) FROM tblorders

Это работает, чтобы избавиться от AM, теперь давайте установим значенияпеременной и попытайтесь обернуть строку в str_to_date () вокруг результатов:

SELECT  trim('AM'  FROM  `orderdate`) AS `value`, STR_TO_DATE(`value`,'%d,%m,%Y') FROM tblorders

Это дает значение в виде неизвестного столбца.Как еще можно связать два значения функции вместе, чтобы затем использовать их для фильтрации, например, значение WHERE> 1.02.2006?

1 Ответ

1 голос
/ 24 февраля 2012

Вы можете составить функции, подобные этой:

select str_to_date(trim('AM' from orderdate), '%m/%d/%Y')

Обратите внимание, что я также исправил ваш формат даты, чтобы он соответствовал вашим данным.На самом деле вам не нужно обрезать эти значения, чтобы использовать str_to_date для них, просто это будет работать нормально:

select str_to_date(orderdate, '%m/%d/%Y')

Если вы хотите использовать это в предложении WHERE, тогда поместите туда вызовы функций:

select trim('AM' from orderdate), str_to_date(orderdate, '%m/%d/%Y')
from your_table
where str_to_date(orderdate, '%m/%d/%Y') > '2006-01-02'

и позволить оптимизатору распознать повтор или использовать производную таблицу:

select value, the_date
from (
    select trim('AM' from orderdate) as value, str_to_date(orderdate, '%m/%d/%Y') as the_date
    from your_table
) dt
where the_date > '2006-01-02'

Обратите внимание на использование в запросе ISO 8601 дат, чтоФормат однозначен, и любая база данных, которую стоит использовать, поймет это независимо от ваших настроек локали.

Я бы также порекомендовал вам исправить вашу схему, чтобы использовать реальные метки времени вместо этих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...