SEC_TO_TIME нарушение функции в кейс-функции - PullRequest
0 голосов
/ 02 сентября 2018

В моем запросе выбора есть функция case. В этом случае я хочу преобразовать "SongLength" в секундах в формат "мм: сс" с помощью функции SEC_TO TIME. Однако я получаю синтаксическую ошибку при помещении этой функции туда.

select SongTitle,Artist,SongLength
  case
       when SongLength < 600 then
            sec_to_time(SongLength)
       else
            sec_to_time(SongLength)
  end 
 from Songs, Artists where Songs.ArtistId = Artists.Id 
order by SongTitle;

Ответы [ 2 ]

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

см. Пример ниже отлично работает

select case
    when 400 < 600 then
        sec_to_time(400)
    else
        sec_to_time(300)
    end as col

возвращается ниже результата

     col
    00:06:40

Так что, если ваш тип данных столбца SongLength числовой, он должен работать

http://www.sqlfiddle.com/#!9/835f61/150

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

Попробуйте SongLength сделать псевдоним как:

select SongTitle,Artist,
(case
when SongLength < 600 then
    sec_to_time(SongLength)
else
    sec_to_time(SongLength)
end) as SongLength 
 from Songs join Artists 
  on ( Songs.ArtistId = Artists.Id ) 
 order by SongTitle;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...