Laravel красноречивый получить формат даты из строки - PullRequest
0 голосов
/ 14 сентября 2018

В моей таблице я ввел столбец в виде строки (например: ' 20170502 ').
Я хочу получить из этой строки неделю дня, поэтому я пытаюсь преобразовать ее в формат датыно это не работает.

$event = VEventMp::where('event_seq', '=', $mypage_data->event_seq)
    ->select(
        'ENFORCE_PLACE',
        'ENFORCE_FROM',
        \DB::raw("DATE_FORMAT(STR_TO_DATE(ENFORCE_FROM,'%y/%m/%d'), '%m月%d日') 
         AS day"),
        \DB::raw('(CASE WHEN WEEKDAY(day) = 0 THEN "月"
        WHEN WEEKDAY(start_time) = 1 THEN "火"
        WHEN WEEKDAY(start_time) = 2 THEN "水"
        WHEN WEEKDAY(start_time) = 3 THEN "木"
        WHEN WEEKDAY(start_time) = 4 THEN "金"
        WHEN WEEKDAY(start_time) = 5 THEN "土"
        WHEN WEEKDAY(start_time) = 6 THEN "日" END) AS weekday')
    ->first();

Где я ошибся?
Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

У вас есть пара проблем, во-первых, если формат даты похож на 20170502, то вы должны сопоставить его в своем вызове с STR_TO_DATE, поэтому измените его на:

STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')

Во-вторых, вы не можете использовать псевдоним в части запроса SELECT, поэтому вам нужно изменить выражение CASE на

(CASE WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 0 THEN "月"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 1 THEN "火"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 2 THEN "水"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 3 THEN "木"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 4 THEN "金"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 5 THEN "土"
      WHEN WEEKDAY(STR_TO_DATE(ENFORCE_FROM,'%Y%m%d')) = 6 THEN "日" END) AS weekday
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...