Проверение в течение времени располагается перекрытие, проблема сторожа [SQL]

У вас есть две проблемы:

  1. Вы предоставили MuiThemeProvider, но он не упаковывает Paper. Но вы хотите изменить стиль Paper. Вы должны убедиться, что MuiThemeProvider является родителем компонентов, которые вы пытаетесь настроить. См. Документы .
  2. На цвет фона Paper не влияют palette.primary или palette.secondary. Он принимает цвет из palette.background.paper. См. Тему по умолчанию здесь .

Вот демонстрация, надеюсь, это поможет.

const {createMuiTheme, green, CssBaseline, Paper, MuiThemeProvider
} = window['material-ui'];

const theme = createMuiTheme({
  typography: {
    useNextVariants: true,
  },
  palette: {
   background: {paper: '#5fba7d'}
  },
});

 const Footer = () => {
    return(
     
       
       
        
          

Copywright Medicinal Foods 2019!

All Rights Reserved!

Thanks for visitng!

); } ReactDOM.render(
, document.getElementById('root'));






8
задан Community 23 May 2017 в 12:17
поделиться

3 ответа

Вот способ выравнивания диапазона дат, подобный этому

Start          | End
2009-1-1 06:00 | 2009-1-1 18:00
2009-2-1 20:00 | 2009-2-2 04:00
2009-2-2 06:00 | 2009-2-2 14:00

Вы должны сравнить предыдущие и следующие даты в каждой строке и посмотреть, есть ли

  • Дата текущей строки в начале находится в диапазоне дат предыдущей строки.
  • Дата конца текущей строки попадает в диапазон дат следующей строки.

alt text

Используя приведенный выше код, реализация UDF выполняется так же просто, как и следовало бы.

create function fnThereIsWatchmenBetween(@from datetime, @to datetime)
returns bit
as
begin
    declare @_Result bit

    declare @FlattenedDateRange table (
        Start   datetime,
        [End]   datetime
    )

    insert  @FlattenedDateRange(Start, [End])
    select  distinct 
            Start = 
                case 
                    when Pv.Start is null then Curr.Start 
                    when Curr.Start between Pv.Start and Pv.[End] then Pv.Start
                    else Curr.Start 
                end,
            [End] = 
                case 
                    when Curr.[End] between Nx.Start and Nx.[End] then Nx.[End] 
                    else Curr.[End] 
                end
    from    shift Curr
            left join shift Pv on Pv.ID = Curr.ID - 1 --; prev
            left join shift Nx on Nx.ID = Curr.ID + 1 --; next

    if exists(  select  1
                from    FlattenedDateRange R
                where   @from between R.Start and R.[End]
                        and @to between R.Start and R.[End]) begin
        set @_Result = 1    --; There is/are watchman/men during specified date range
    end
    else begin
        set @_Result = 0    --; There is NO watchman
    end

    return @_Result
end
2
ответ дан 6 December 2019 в 00:59
поделиться

Неохраняемый интервал, очевидно, начинается либо в конце наблюдаемого периода, либо в начале всего проверяемого временного диапазона. Поэтому вам нужен запрос, который выбирает все элементы из этого набора, которые не имеют перекрывающегося сдвига. Запрос будет выглядеть так:

select 1 
from shifts s1 where not exists
    (select 1 from shifts s2
     where s2.start<=s1.end and s2.end > s1.end
    )
    and s1.end>=start_of_range and s1.end<  end_of_range
union
select 1 
where not exists
    (select 1 from shifts s2 
      where s2.start<=start_of_range and s2.end > start_of_range
    )

Если он не пустой, значит, у вас есть неохраняемый интервал. Я подозреваю, что он будет работать в квадратичном времени, поэтому он может быть медленнее, чем "sort, fetch and loop".

1
ответ дан 6 December 2019 в 00:59
поделиться

Один из способов - создать временную таблицу со строкой для каждого значения времени, требующего проверки (которое является функцией разрешения ваших смен).

Если бы это были минуты, будет иметь 60 * 24 = 1440 строк в день; около 10 тысяч строк в неделю.

Тогда SQL относительно прост:

SELECT COUNT (1)
ОТ # минут m
СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ переключает с ON на m.checktime МЕЖДУ s.start_time И s.end_time
HAVING COUNT (1) = 0

Это также дает возможность показывать, сколько смен покрывает одно и то же время.

Время выполнения должно быть незначительным с учетом описанных вами шкал.

0
ответ дан 6 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: