Чтобы построить сортируемую строку даты из этого, вам нужно CONCAT
, чтобы объединить биты, и LPAD
, чтобы убедиться, что поля месяца и дня состоят из двух цифр.Примерно так:
CONCAT(`year`,'-',LPAD(`month`,2,'00'),'-',LPAD(`day`,2,'00'))
Как только вы это сделаете, вы сможете использовать BETWEEN
, так как они будут в сортируемом формате.Однако, если вам все еще нужно преобразовать их в фактические поля даты и времени, вы можете обернуть все это в UNIX_TIMESTAMP()
, чтобы получить значение метки времени.
Таким образом, вы получите нечто вроде этого:1011 *
Однако имейте в виду, что это будет на значительно * на 1014 * медленнее, чем если бы поле было просто простой отметкой времени.И вам обязательно нужно убедиться, что у вас есть индекс для полей года, месяца и дня.