# daystart Função de script e de gráfico

Esta função retorna um valor correspondente a uma data/hora com o primeiro milissegundo do dia contido no argumento time. O formato de saída padrão será o TimestampFormat definido no script.

Sintaxe:

DayStart(time[, [period\_no[, day\_start]])

Tipo de dados de retorno: dual

Argumentos

| Argumento | Descrição |
| --- | --- |
| time | A data/hora para avaliar. |
| period\_no | period\_no é um inteiro, ou uma expressão que resolve um inteiro, em que o valor 0 indica o dia que contém o time. Valores negativos em period\_no indicam dias precedentes e valores positivos indicam dias sucessivos. |
| day\_start | Para especificar que os dias não comecem à meia-noite, indique uma diferença como uma fração de um dia em day\_start. Por exemplo, 0,125 para representar 3:00 a.m.<br><br>Em outras palavras, para criar o deslocamento, divida a hora de início por 24 horas. Por exemplo, para um dia começar às 7:00 a.m., use a fração 7/24. |

## Quando usar

A função `daystart()` é comumente usada como parte de uma expressão quando o usuário deseja que o cálculo use a fração do dia decorrido até o momento. Por exemplo, ela pode ser usada para calcular o total de salários ganhos pelos funcionários no dia até o momento.

Esses exemplos usam o formato de carimbo de data/hora `'M/D/YYYY h:mm:ss[.fff] TT'`. O formato do carimbo de data/hora é especificado na instrução `SET TimeStamp`, na parte superior do script de carregamento de dados. Altere o formato nos exemplos para atender às suas necessidades.

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Retorna 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Retorna 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Retorna 1/25/2013 12:00:00 PM. |

## Configurações regionais

A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução `SET DateFormat` no seu script de carregamento de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos.

As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor onde o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na Qlik Sense interface do usuário. Qlik Sense será exibido no mesmo idioma do navegador que você está usando.

## Exemplo 1 - Exemplo simples

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados simples contendo uma lista de datas, que é carregada em uma tabela chamada `Calendar`.

* A `variável` de sistema padrão TimeStampFormat (`(M/D/YYYY h:mm:ss[.fff] TT`) é usada.

* Um carregamento anterior que cria um campo adicional, denominado `SOD_timestamp`, usando a função `daystart()`.

Além da data, nenhum parâmetro adicional é fornecido para a função.

Script de carregamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Calendar:
    Load
        date,
        daystart(date) as SOD_timestamp
        ;
Load
date
Inline 
[
date
03/11/2022 1:47:15 AM
03/12/2022 4:34:58 AM
03/13/2022 5:15:55 AM
03/14/2022 9:25:14 AM
03/15/2022 10:06:54 AM
03/16/2022 10:44:42 AM
03/17/2022 11:33:30 AM
03/18/2022 12:58:14 PM
03/19/2022 4:23:12 PM
03/20/2022 6:42:15 PM
03/21/2022 7:41:16 PM
];
					
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `date`

* `SOD_timestamp`

Tabela de resultados

| data | SOD\_timestamp |
| --- | --- |
| 03/11/2022 1:47:15 AM | 3/11/2022 12:00:00 AM |
| 03/12/2022 4:34:58 AM | 3/12/2022 12:00:00 AM |
| 03/13/2022 5:15:55 AM | 3/13/2022 12:00:00 AM |
| 03/14/2022 9:25:14 AM | 3/14/2022 12:00:00 AM |
| 03/15/2022 10:06:54 AM | 3/15/2022 12:00:00 AM |
| 03/16/2022 10:44:42 AM | 3/16/2022 12:00:00 AM |
| 03/17/2022 11:33:30 AM | 3/17/2022 12:00:00 AM |
| 03/18/2022 12:58:14 PM | 3/18/2022 12:00:00 AM |
| 03/19/2022 4:23:12 PM | 3/19/2022 12:00:00 AM |
| 03/20/2022 6:42:15 PM | 3/20/2022 12:00:00 AM |
| 03/21/2022 7:41:16 PM | 3/21/2022 12:00:00 AM |

Como você pode ver na tabela acima, o carimbo de data/hora do fim do dia é gerado para cada data em nosso conjunto de dados. O carimbo de data/hora está no formato da variável do sistema `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Exemplo 2: period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados contendo multas de estacionamento, que é carregado em uma tabela denominada `Fines`. O conjunto de dados inclui os seguintes campos:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Um carregamento anterior usando a função `daystart()` e fornecendo todos os três parâmetros: `time`, `period_no` e `day_start`. Esse carregamento anterior cria os dois novos campos de data a seguir:

  * Um campo de data `early_repayment_period`, começando sete dias antes do vencimento do pagamento.

  * Um campo de data `late_penalty_period`, começando 14 dias após o vencimento do pagamento.

Script de carregamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
        *,
        daystart(due_date,-7) as early_repayment_period,
        daystart(due_date,14) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabela de resultados

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 12:00:00 AM | 2/25/2022 12:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 12:00:00 AM | 4/8/2022 12:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 12:00:00 AM | 4/28/2022 12:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 12:00:00 AM | 7/12/2022 12:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 12:00:00 AM | 8/29/2022 12:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 12:00:00 AM | 11/30/2022 12:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 12:00:00 AM | 1/31/2023 12:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 12:00:00 AM | 4/5/2023 12:00:00 AM |

Os valores dos novos campos estão em `TimestampFormat M/DD/YYYY tt`. Como a função `daystart()` foi usada, os valores de carimbo de data/hora são todos os primeiros milissegundos do dia.

Os valores do período de reembolso antecipado são sete dias antes da data de vencimento, como resultado de o segundo argumento transmitido na função `  daystart() ` ser negativo.

Os valores do período de reembolso tardio são 14 dias após a data de vencimento, como resultado de o segundo argumento transmitido na função `daystart()` ser positivo.

## Exemplo 3: day\_start

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* O mesmo conjunto de dados e cenário do exemplo anterior.

* O mesmo carregamento anterior que o exemplo anterior.

Neste exemplo, definimos o dia útil para começar e terminar às 7:00 AM todos os dias.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY';

Fines:
    Load
        *,
        daystart(due_date,-7,7/24) as early_repayment_period,	 
        daystart(due_date,14, 7/24) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabela de resultados

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 | 2/3/2022 7:00:00 AM | 2/24/2022 7:00:00 AM |
| 03/25/2022 | 3/17/2022 7:00:00 AM | 4/7/2022 7:00:00 AM |
| 04/14/2022 | 4/6/2022 7:00:00 AM | 4/27/2022 7:00:00 AM |
| 06/28/2022 | 6/20/2022 7:00:00 AM | 7/11/2022 7:00:00 AM |
| 08/15/2022 | 8/7/2022 7:00:00 AM | 8/28/2022 7:00:00 AM |
| 11/16/2022 | 11/8/2022 7:00:00 AM | 11/29/2022 7:00:00 AM |
| 01/17/2023 | 1/9/2023 7:00:00 AM | 1/30/2023 7:00:00 AM |
| 03/22/2023 | 3/14/2023 7:00:00 AM | 4/4/2023 7:00:00 AM |

As datas agora têm um carimbo de data/hora de 7:00 AM porque o valor do argumento `day_start` que foi transmitido para a função `daystart()` era 7/24. Isso define o início do dia como 7:00 AM.

Como o campo `due_date` não tem um carimbo de data/hora, ele é tratado como 12:00 AM, o que, portanto, ainda faz parte do dia anterior, já que os dias começam e terminam às 7:00 AM. Portanto, o período de reembolso antecipado de uma multa devida em 11 de fevereiro começa em 3 de fevereiro às 7:00 AM.

## Exemplo 4: Exemplo de objeto de gráfico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.htm)

#### Script de carregamento e expressão de gráfico

Visão geral

Abra o editor de carregamento de dados e adicione o script de carregamento abaixo em uma nova guia.

Este exemplo usa o mesmo conjunto de dados e cenário do exemplo anterior.

No entanto, somente a tabela Fines original é carregada no aplicativo, com os dois valores adicionais de datas de vencimento sendo calculados em um objeto de gráfico.

Script de carregamento

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
*
Inline 
[
id, due_date, numer_plate,amount
1,02/11/2022 9:25:14 AM, 573RJG,50.00
2,03/25/2022 10:06:54 AM, SC41854,50.00
3,04/14/2022 10:44:42 AM, 8EHZ378,50.00
4,06/28/2022 11:33:30 AM, 8HSS198,50.00
5,08/15/2022 12:58:14 PM, 1221665,50.00
6,11/16/2022 4:23:12 PM, EAK473,50.00
7,01/17/2023 6:42:15 PM, KD6822,50.00
8,03/22/2023 7:41:16 PM, 1GGLB,50.00
];
```

Resultados

Faça o seguinte:

1. Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão: due\_date.

2. Para criar o campo early\_repayment\_period, crie a seguinte medida:

   =daystart(due\_date,-7,7/24)

3. Para criar o campo late\_penalty\_period, crie a seguinte medida:

   =daystart(due\_date,14,7/24)

Tabela de resultados

| due\_date | =daystart(due\_date,-7,7/24) | =daystart(due\_date,14,7/24) |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 7:00:00 AM | 2/25/2022 7:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 7:00:00 AM | 4/8/2022 7:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 7:00:00 AM | 4/28/2022 7:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 7:00:00 AM | 7/12/2022 7:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 7:00:00 AM | 8/29/2022 7:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 7:00:00 AM | 11/30/2022 7:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 7:00:00 AM | 1/31/2023 7:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 7:00:00 AM | 4/5/2023 7:00:00 AM |

Os valores dos novos campos estão em TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Como a função daystart() foi usada, os valores de carimbo de data/hora correspondem ao primeiro milissegundo do dia.

Os valores do período de reembolso antecipado são sete dias antes da data de vencimento, já que o segundo argumento transmitido na função daystart() era negativo.

Os valores do período de reembolso tardio são 14 dias após a data de vencimento, já que o segundo argumento transmitido na função daystart() era positivo.

As datas têm um carimbo de data/hora de 7:00 AM, pois o valor do terceiro argumento transmitido para a função daystart(), day\_start, era 7/24.