Você pode usar o
DAYOFWEEK()
função no MySQL para retornar o dia da semana de uma data. Nesse contexto, um valor de retorno de 1 corresponde a domingo, 2 corresponde a segunda-feira, etc.
Este artigo contém exemplos para demonstrar.
Sintaxe
A sintaxe fica assim:
DAYOFWEEK(date)
Onde
date
é o valor de data do qual você deseja que o dia da semana seja retornado. Exemplo
Aqui está um exemplo para demonstrar.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Podemos executar isso junto com o
DAYNAME()
função para ver a que dia corresponde:SET @date = '2019-01-01'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week';
Resultado:
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DAYOFWEEK() vs DAYOFMONTH()
Aqui está um exemplo para demonstrar a diferença entre o
DAYOFWEEK()
e DAYOFMONTH()
funções. SET @date = '2019-01-20'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week', DAYOFMONTH(@date) AS 'Day of Month';
Resultado:
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
O
DAYOFMONTH()
função retorna um valor entre 1 e 31 (ou 0 para datas com parte do dia zero) que representa o dia do mês. Ele é redefinido para 1 no início de cada mês. O
DAYOFWEEK()
por outro lado, retorna um valor entre 1 e 7 . Ele é redefinido para 1 no início de cada semana. Um exemplo de banco de dados
Aqui, fazemos algo semelhante aos exemplos anteriores, exceto que este exemplo usa dados de um banco de dados:
USE sakila; SELECT payment_date AS 'Date/Time', DAYNAME(payment_date) AS 'Day Name', DAYOFWEEK(payment_date) AS 'Day of Week' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
Data/hora atual
Aqui está um exemplo de extração da parte do dia da data e hora atuais (que é retornada usando o
NOW()
função). SELECT NOW(), DAYOFWEEK(NOW());
Resultado:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Outra maneira de fazer isso é usar o
CURDATE()
função, que retorna apenas a data (mas não a hora). SELECT CURDATE(), DAYOFWEEK(CURDATE());
Resultado:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+