logo

Функции за дата и час на MySQL

Боравене дата и час данните в MySQL са от съществено значение за много операции с бази данни, особено когато става въпрос за обработка на задачи за планиране на времеви отпечатъци или генериране на база време. MySQL предоставя различни функции за дата и час, които помагат на потребителите да работят със стойности на дата, да извършват изчисления и да ги форматират според нуждите.

Тези функции позволяват на разработчиците да извършват изчисления, извличайки конкретни части от дата или дори да форматират изхода за по-добра четливост. В тази статия ще разгледаме най-често използваните MySQL функции за дата, ще обясним синтаксиса им, ще предоставим примери и ще ви преведем как да ги използвате ефективно

Разбиране на типовете данни за дата и час в MySQL

Когато работите с дати в MySQL, това може да бъде трудно за начинаещи, особено защото форматът на датата в базата данни трябва да съвпада с формата на входните данни по време на вмъкването. В много случаи, вместо просто да използваме проста дата, може да се наложи да съхраним както дата, така и час в зависимост от случая на употреба. Това е мястото, където DATETIME и TIMESTAMP типовете данни влизат в действие.



MySQL предоставя следните типове данни за съхраняване на стойности за дата и час:

1. ДАТА :

  • формат :YYYY-MM-DD
  • Използва се за съхраняване само на датата (година, месец и ден) без времеви компонент.

2. ДАТА ЧАС :

  • формат :YYYY-MM-DD HH:MM:SS
  • Съхранява както датата, така и часа, което го прави полезно, когато трябва да заснемете определени часове заедно с датата.

3. КЛАПОТО ЗА ЧАС :

  • формат :YYYY-MM-DD HH:MM:SS
  • Подобно наDATETIMEноTIMESTAMPвключва също поддръжка на часови зони. Той автоматично се актуализира до текущото времево клеймо, когато даден запис е модифициран, което го прави идеален за проследяване на промените в записите във времето.

4. ГОДИНА :

  • формат :YYYYилиYY
  • Използва се за съхраняване само на годината, което може да бъде полезно за приложения, където е необходима само годината, като проследяване на години на раждане или фискални години.

Функции за дата и час на MySQL

Сега нека се потопим във функциите за дата на MySQL, които можете да използвате за ефективно манипулиране и заявка за данни за дата и час.

1. NOW()- Вземете текущата дата и час

The СЕГА() функцията извлича текущата дата и час в ГГГГ-ММ-ДД ЧЧ:МИ:СС формат.

Запитване:

SELECT NOW();  

Изход:

сега метод изходно изображение' title=

2. CURDATE() - Вземете само текуща дата

Ако имаме нужда само от текущата дата без времевата част, която можем да използваме CURDATE() който връща датата в YYYY-MM-DD формат.

Запитване:

SELECT CURDATE();  

Изход: 

ИЗХОД2' loading='lazy' title=

3. CURTIME() - Вземете само текущото време

Функцията CURTIME() връща текущия час ЧЧ:МИ:СС формат с изключение на датата.

Запитване:

SELECT CURTIME();  

Изход: 

ИЗХОД3' loading='lazy' title=

4. DATE() - Извличане на частта за датата от стойност DATETIME

TheDATE()функция извлича само частта от датата от aDATETIMEилиTIMESTAMPстойност отхвърляне на времето.

Пример: За маса т.нар users :

Id Име Час на раждане
4120Практикувайте1996-09-26 16:44:15.581

Запитване:

pyspark
SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Изход:

Име Рождена дата
Практикувайте1996-09-26

5. EXTRACT() - Извличане на конкретни части от дата

EXTRACT()се използва за извличане на конкретни части от дата, като например деня месец или година. Тази функция може да бъде особено полезна, когато анализирате или сравнявате различни части от дата. Няколко единици могат да бъдат разгледани, но се използват само някои, като напр МИКРОСЕКУНДА ВТОРА МИНУТА ЧАС ДЕН СЕДМИЦА МЕСЕЦ ТРИМЕСЕЧИЕ ГОДИНА и т.н. А 'дата' е валиден израз за дата.

Синтаксис:

ЕКСТРАКТ (единица ОТ дата);

Ден на заявка за извличане:

SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

Изход: 

Име рожден ден
Практикувайте26

Заявка за извличане на година:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

Изход: 

Име Година на раждане
Практикувайте1996 г

Заявка за извличане на секунди:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

Изход:

Име Раждане Второ
Практикувайте581

6. DATE_ADD() - Добавяне на интервали към дата

The DATE_ADD() функция ви позволява да добавяте времеви интервали (напр. дни, месеци, години) към дата илиDATETIMEстойност.

Синтаксис:

DATE_ADD(дата INTERVAL израз тип);

Пример: За таблицата по-долу, наречена „ Тест '

Id Име Час на раждане
4120Практикувайте1996-09-26 16:44:15.581

Запитване до Добавяне на 1 година към дата

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

Изход:

Име BirthTimeModified
Практикувайте1997-09-26 16:44:15.581

Заявка за добавяне на 30 дни към дата

SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Изход:

Име BirthDayModified
Практикувайте1996-10-26 16:44:15.581

Заявка за добавяне на 4 часа към дата

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

Изход: 

Име Раждане Второ
Практикувайте1996-10-26 20:44:15.581

7. DATEDIFF() – Намерете разликата между две дати

Тази функция връща броя на дните между две дати. 

Синтаксис:

DATEDIFF(интервал дата1 дата2);

интервал - минута/час/месец/година и т.н

date1 & date2 - израз за дата/час

Запитване до Намерете разликата между две дати

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

Изход: 

DateDiff

8. DATE_FORMAT() - Формат на дата и час

DATE_FORMAT() ни позволява да форматираме a ДАТА ДАТА ЧАС или КЛАПОТО ЗА ЧАС стойност в персонализиран формат с помощта на контейнери.

Синтаксис:

DATE_FORMAT(формат на дата);

датата е валидна дата и форматът определя изходния формат за дата/час. Форматите, които могат да се използват са:

  • %a-Съкратено име на ден от седмицата (нд-сб)
  • %b-Съкратено име на месеца (януари-декември)
  • %c-числов месец (0-12)
  • %D-ден от месеца с английски суфикс (0-ви, 1-ви, 2-ри, 3-ти)
  • %d-числов ден от месеца (00-31)
  • %e-Ден от месеца цифров (0-31)
  • %f-микросекунди (000000-999999)
  • %H-час (00-23)
  • %h-час (01-12)
  • %I-час (01-12)
  • %i-минути цифрови (00-59)
  • %j-ден от годината (001-366)
  • %k-час (0-23)
  • %l-час (1-12)
  • %M-име на месеца (януари-декември)
  • %m-числов месец (00-12)
  • %p-сутринта или следобед
  • %r-Време 12 часа (чч:мм: сс, последвано от сутринта или следобед)
  • %S-секунди (00-59)
  • %s-секунди (00-59)
  • %T-време 24 часа (чч:мм:сс)
  • %U-седмица (00-53), където неделя е първият ден от седмицата
  • %u-седмица (00-53), където понеделник е първият ден от седмицата
  • %V-седмица (01-53), където неделя е първият ден от седмицата, използван с %X
  • %v-седмица (01-53), където понеделник е първият ден от седмицата, използван с %x
  • %W-Име на ден от седмицата (неделя-събота)
  • %w-ден от седмицата (0=неделя 6=събота)
  • %X-година за седмицата, където неделя е първият ден от седмицата, четири цифри, използвани с %V
  • %x-година за седмицата, където понеделник е първият ден от седмицата четири цифри, използвани с %v
  • %Y-година, четири цифри
  • %y-Две цифри за година

Заявка за форматиране на дата

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

Изход:

Форматирана_дата
Четвъртък, 10 април 2025 г

Най-добри практики за работа с дата и час в MySQL

1. Винаги използвайте подходящи формати за дата

Когато вмъквате или актуализирате дати, уверете се, че следвате очакваните формати на MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Това гарантира, че вашите заявки връщат очакваните резултати без грешки.

2. Съображения относно часовата зона с TIMESTAMP

ДокатоDATETIMEне съхранява информация за часовата зонаTIMESTAMPправи. Ако вашето приложение е чувствително към часовата зона (например в международни приложения), помислете дали да не използватеTIMESTAMPза полета за дата-час, които трябва да отчитат различни часови зони.

3. Обработка на диапазони от дати в заявки

За филтриране на данни въз основа на периоди от време (напр. извличане на всички записи от определен месец или година) се уверете, че използвате правилни сравнения на дати вWHEREклауза. Пример:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Съображения за производителност

Когато работите с функции за дата и час, особено в големи масиви от данни, имайте предвид въздействието върху производителността. Избягвайте да използвате функции катоNOW()илиCURDATE()вWHEREклауза, тъй като те могат да забавят заявките при работа с големи таблици.

Заключение

Функциите за дата и час на MySQL са основни инструменти за обработка и манипулиране времеви данни във вашите бази данни. Чрез овладяване на функции катоNOW() CURDATE() DATE_ADD() DATEDIFF()иDATE_FORMAT()можете лесно да работите с базирани на времето изчисления сравнения и формати . Ключът към ефективното използване на тези функции е да разберете техния синтаксис кога и как да ги използвате и техните последици за производителността в големи набори от данни. С тези знания ще можете да създавате по-ефективни, точни и мащабируеми заявки за всички ваши нужди, свързани с дата и час в MySQL.

Създаване на тест