sql >> Databasteknik >  >> RDS >> Mysql

DAYOFWEEK() Exempel – MySQL

Du kan använda DAYOFWEEK() funktion i MySQL för att returnera veckodagen från ett datum.

I detta sammanhang ett returvärde på 1 motsvarar söndag, 2 motsvarar måndag osv.

Den här artikeln innehåller exempel att visa.

Syntax

Syntaxen ser ut så här:

DAYOFWEEK(date)

Där date är det datumvärde som du vill att veckodagen ska returneras från.

Exempel

Här är ett exempel att visa.

SELECT DAYOFWEEK('2019-01-01') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      3 |
+--------+

Vi kan köra detta tillsammans med DAYNAME() funktion för att se vilken dag det motsvarar:

SET @date = '2019-01-01';
SELECT 
    @date,
    DAYNAME(@date) AS 'Day Name',
    DAYOFWEEK(@date) AS 'Day of Week';

Resultat:

+------------+----------+-------------+
| @date      | Day Name | Day of Week |
+------------+----------+-------------+
| 2019-01-01 | Tuesday  |           3 |
+------------+----------+-------------+

DAYOFWEEK() kontra DAYOFMONTH()

Här är ett exempel för att visa skillnaden mellan DAYOFWEEK() och DAYOFMONTH() funktioner.

SET @date = '2019-01-20';
SELECT 
    @date,
    DAYNAME(@date) AS 'Day Name',
    DAYOFWEEK(@date) AS 'Day of Week',
    DAYOFMONTH(@date) AS 'Day of Month';

Resultat:

+------------+----------+-------------+--------------+
| @date      | Day Name | Day of Week | Day of Month |
+------------+----------+-------------+--------------+
| 2019-01-20 | Sunday   |           1 |           20 |
+------------+----------+-------------+--------------+

DAYOFMONTH() funktion returnerar ett värde mellan 1 och 31 (eller 0 för datum med en nolldag del) som representerar dagen i månaden. Den återställs till 1 i början av varje månad.

DAYOFWEEK() funktion å andra sidan, returnerar ett värde mellan 1 och 7 . Den återställs till 1 i början av varje vecka.

Ett databasexempel

Här gör vi en liknande sak som de tidigare exemplen, förutom att det här exemplet använder data från en databas:

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;

Resultat:

+---------------------+-----------+-------------+
| Date/Time           | Day Name  | Day of Week |
+---------------------+-----------+-------------+
| 2005-05-25 11:30:37 | Wednesday |           4 |
+---------------------+-----------+-------------+

Aktuellt datum/tid

Här är ett exempel på att extrahera dagdelen från det aktuella datumet och tiden (som returneras med NOW() funktion).

SELECT 
    NOW(),
    DAYOFWEEK(NOW());

Resultat:

+---------------------+------------------+
| NOW()               | DAYOFWEEK(NOW()) |
+---------------------+------------------+
| 2018-06-26 07:42:31 |                3 |
+---------------------+------------------+

Ett annat sätt att göra detta är att använda CURDATE() funktion, som endast returnerar datumet (men inte tiden).

SELECT 
    CURDATE(),
    DAYOFWEEK(CURDATE());   

Resultat:

+------------+----------------------+
| CURDATE()  | DAYOFWEEK(CURDATE()) |
+------------+----------------------+
| 2018-06-26 |                    3 |
+------------+----------------------+


  1. Hur kan jag göra något som:ANVÄND @databaseName

  2. Finns det någon skillnad mellan DateTime i c# och DateTime i SQL-servern?

  3. Hur får jag en rå, kompilerad SQL-fråga från ett SQLAlchemy-uttryck?

  4. Prestanda överraskningar och antaganden:Godtycklig TOPP 1