Преобразовать строку в формат даты и получить номер недели - PullRequest
0 голосов
/ 16 января 2020

У меня есть дата в формате 15-Nov-20. Я хочу преобразовать его в формат даты таблицы MySQL (гггг-мм-дд), используя запрос перед вставкой данных в таблицу, и хочу получить неделю и год отдельно от этой даты. Я пробовал следующий запрос:

SELECT  STR_TO_DATE('15-Nov-20', '%Y-%m-%d') FROM table

Но это возвращает NULL.

Ответы [ 2 ]

1 голос
/ 16 января 2020

Неверная строка формата (см. руководство ). Для ваших данных выборки это должно быть %d-%M-%y например

SELECT  STR_TO_DATE('15-Nov-20', '%d-%M-%y')

Вывод:

2020-11-15

Чтобы получить год и неделю, вы можете использовать DATE_FORMAT с одним из %U, %u, %V или %v в зависимости от ваших потребностей (их определения см. В руководстве ), например,

SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%Y-%U')

Вывод

2020-46

Обратите внимание, что если вы используете %V или %v для номера недели, вы также должны использовать %X или %x для года, например:

SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%X-%V')

Выход

2020-46

Демонстрация на dbfiddle

0 голосов
/ 16 января 2020

Вы также можете использовать класс DateTime PHP для получения номеров недели и года.

$parsedDate = new DateTime('15-Nov-20');
$week = $parsedDate->format("W");
echo 'Weeknumber:' . $week;
echo '<br>';
$year = $parsedDate->format("Y");
echo 'Year:' . $year;

Это даст вам:

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