Я трохи розгублений, як замовити формати дати.
Для формату YYYY-MM-DDви зробите це:...ORDER BY date DESC...
Як би ви замовили DD/MM/YYYY?
Це не працює:
SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
Я трохи розгублений, як замовити формати дати.
Для формату YYYY-MM-DDви зробите це:...ORDER BY date DESC...
Як би ви замовили DD/MM/YYYY?
Це не працює:
SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
Відповіді:
Ви можете використовувати STR_TO_DATE()для перетворення рядків у значення дати MySQL та ORDER BYрезультат:
ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')
Однак було б розумно перетворити стовпець у DATEтип даних, а не використовувати рядки.
Здогадалися, що ви, мабуть, просто хочете відформатувати дату виходу? то це те, за чим ти йдеш
SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate
FROM table
ORDER BY date DESC
LIMIT 0,14
Або ви насправді хочете сортувати за днем до місяця перед роком?
mysql> DESCRIBE Table;і вставити вихід
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
%lне працює? Це дає 12за кожен місяць, і мені довелося змінити %m.
Використання:
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y") AS 'NAME'
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'
Довідка: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
для мого випадку це спрацювало
str_to_date(date, '%e/%m/%Y' )
Якщо година важлива, я використовував str_to_date(date, '%d/%m/%Y %T' ), %Tпоказує годину у форматі hh:mm:ss.
%Tпоказує значення з форматом часу. До речі, ви отримали мою позицію.
ЗАМОВЛЕННЯ ЗА типом дати не залежить від формату дати, формат дати призначений лише для показу, у базі даних вони є тими ж даними.