Руковање датум и време подаци у МиСКЛ-у су од суштинског значаја за многе операције базе података, посебно када је реч о руковању временским ознакама задацима планирања или генерисању на основу времена. МиСКЛ пружа разне функције датума и времена које помажу корисницима да раде са вредностима датума да изврше прорачуне и форматирају их по потреби.
Ове функције омогућавају програмерима да изврше прорачуне да издвоје одређене делове датума или чак форматирају излаз ради боље читљивости. У овом чланку ћемо истражити најчешће коришћене МиСКЛ функције датума, објаснити њихову синтаксу, дати примере и провести вас кроз како да их ефикасно користите
Разумевање МиСКЛ типова података датума и времена
Када радите са датумима у МиСКЛ-у, то може бити незгодно за почетнике, посебно зато што формат датума у бази података мора да одговара формату улазних података током уметања. У многим случајевима, уместо да користимо само једноставан датум, можда ћемо морати да сачувамо и датум и време у зависности од случаја употребе. Овде је DATETIME и TIMESTAMP типови података долазе у игру.
МиСКЛ обезбеђује следеће типове података за чување вредности датума и времена:
1. ДАТУМ :
- Формат :
YYYY-MM-DD - Користи се за чување само датума (година, месец и дан) без временске компоненте.
2. ДАТЕТИМЕ :
- Формат :
YYYY-MM-DD HH:MM:SS - Чува и датум и време што га чини корисним када треба да снимите одређена времена заједно са датумом.
3. ТИМЕСТАМП :
- Формат :
YYYY-MM-DD HH:MM:SS - Слично као
DATETIMEалиTIMESTAMPтакође укључује подршку за временску зону. Аутоматски се ажурира на тренутну временску ознаку када се запис измени што га чини идеалним за праћење промена записа током времена.
4. ГОДИНА :
- Формат :
YYYYилиYY - Користи се за чување само године што може бити корисно за апликације где је потребна само година, као што је праћење година рођења или фискалних година.
МиСКЛ функције датума и времена
Хајде сада да заронимо у МиСКЛ функције датума које можете користити за ефикасно руковање и упите података о датуму и времену.
1. САДА()- Добијте тренутни датум и време
Тхе САДА() функција преузима тренутни датум и време у ГГГГ-ММ-ДД ЧЧ:МИ:СС формату.
упит:
SELECT NOW();
Излаз:
који је урфи јавед

2. ЦУРДАТЕ() - Добијте само тренутни датум
Ако нам је потребан само тренутни датум без временског дела који можемо да користимо CURDATE() који враћа датум у YYYY-MM-DD формату.
упит:
SELECT CURDATE();
Излаз:

3. ЦУРТИМЕ() - Добијте само тренутно време
Функција ЦУРТИМЕ() враћа тренутно време у ХХ:МИ:СС формат без датума.
упит:
SELECT CURTIME();
Излаз:

4. ДАТЕ() - Извуците део датума из вредности ДАТЕТИМЕ
ТхеDATE()функција издваја само део датума из аDATETIMEилиTIMESTAMPвредност одбацујући време.
Пример: За сто зв users :
| Ид | Име | БиртхТиме |
|---|---|---|
| 4120 | Вежбајте | 1996-09-26 16:44:15.581 |
упит:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Излаз:
| Име | Датум рођења |
|---|---|
| Вежбајте | 1996-09-26 |
5. ЕКСТРАЦТ() - Издвајање специфичних делова датума
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. ДАТЕ_АДД() - Додајте интервале датуму
Тхе ДАТЕ_АДД() функција вам омогућава да додате временске интервале (нпр. дани месеци године) датуму илиDATETIMEвредност.
Синтакса:
ДАТЕ_АДД(датум ИНТЕРВАЛ тип израза);
Пример: За доњу табелу под називом ' Тест '
| Ид | Име | БиртхТиме |
|---|---|---|
| 4120 | Вежбајте | 1996-09-26 16:44:15.581 |
Упит за Додајте 1 годину датуму
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Излаз:
| Име | БиртхТимеМодифиед |
|---|---|
| Вежбајте | 1997-09-26 16:44:15.581 |
Упит за додавање 30 дана датуму
јава приоритетни ред
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Излаз:
| Име | БиртхДаиМодифиед |
|---|---|
| Вежбајте | 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. ДАТЕДИФФ() – Пронађите разлику између два датума
Ова функција враћа број дана између два датума.
Синтакса:
ДАТЕДИФФ(интервалдате1 дате2);
интервал - минута/сат/месец/година итд
датум1 и датум2- израз датума/времена
Упит за Пронађите разлику између два датума
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Излаз:
| ДатеДифф |
|---|
8. ДАТЕ_ФОРМАТ() - Форматирајте датум и време
ДАТЕ_ФОРМАТ() нам омогућава да форматирамо а ДАТУМ ДАТЕТИМЕ или ТИМЕСТАМП вредност у прилагођени формат помоћу чувара места.
јава замени све стрингове
Синтакса:
ДАТЕ_ФОРМАТ(формат датума);
датум је важећи датум и формат специфицира излазни формат за датум/време. Формати који се могу користити су:
- %а-Скраћени назив радног дана (нед-суб)
- %б-Скраћени назив месеца (јан-децембар)
- %ц-Месец број (0-12)
- %Д-дан у месецу са енглеским суфиксом (0. 1. 2. 3.)
- %д-дан у месецу нумерички (00-31)
- %е-дан у месецу нумерички (0-31)
- %ф-микросекунди (000000-999999)
- %Х-Сат (00-23)
- %х-сат (01-12)
- %И-час (01-12)
- %и-минути нумерички (00-59)
- %ј-Дан у години (001-366)
- %к-сат (0-23)
- %л-сат (1-12)
- %М-име месеца (јануар-децембар)
- %м-месец број (00-12)
- %п-АМ или ПМ
- %р-време 12 сати (хх:мм: сс праћено преподне или поподне)
- %С-секунди (00-59)
- %с-секунди (00-59)
- %Т-време 24 сата (чч:мм:сс)
- %У-недеља (00-53) где је недеља први дан у недељи
- %у-Недеља (00-53) где је понедељак први дан у недељи
- %В-Недеља (01-53) где је недеља први дан у недељи који се користи са %Кс
- %в-Недеља (01-53) где је понедељак први дан у недељи који се користи са %к
- %В-име дана у недељи (недеља-субота)
- %в-Дан у недељи (0=недеља 6=субота)
- %Кс-година за недељу где је недеља први дан у недељи са четири цифре које се користе са %В
- %к-Година за недељу у којој је понедељак први дан у недељи са четири цифре које се користе са %в
- %И-Година нумеричке четири цифре
- %и-Иеар нумеричке две цифре
Упит за форматирање датума
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Излаз:
| Форматтед_дате |
|---|
| У четвртак 10.04.2025 |
Најбоље праксе за рад са датумом и временом у МиСКЛ-у
1. Увек користите одговарајуће формате датума
Приликом уметања или ажурирања датума уверите се да пратите очекиване формате МиСКЛ-а (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Ово осигурава да ваши упити враћају очекиване резултате без грешака.
2. Разматрање временске зоне са ТИМЕСТАМП-ом
ДокDATETIMEне чува информације о временској зониTIMESTAMPради. Ако је ваша апликација осетљива на временску зону (на пример у међународним апликацијама), размислите о коришћењуTIMESTAMPза поља датума и времена која треба да узимају у обзир различите временске зоне.
3. Руковање периодима у упитима
За филтрирање података на основу периода (нпр. преузимање свих записа из одређеног месеца или године) уверите се да користите одговарајућа поређења датума уWHEREклаузула. Пример:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. Разматрање перформанси
Када радите са функцијама датума и времена, посебно у великим скуповима података, имајте на уму утицај на перформансе. Избегавајте коришћење функција као што суNOW()илиCURDATE()уWHEREклаузуле јер могу успорити упите када се ради са великим табелама.
Закључак
МиСКЛ функције датума и времена су неопходни алати за руковање и манипулишући временски подаци унутар ваших база података. Савладавањем функција каоNOW() CURDATE() DATE_ADD() DATEDIFF()иDATE_FORMAT()са којима можете лако радити прорачуни засновани на времену поређења и формати . Кључ за ефикасно коришћење ових функција је разумевање њихове синтаксе када и како да их користе и импликација на перформансе у великим скуповима података. Са овим знањем моћи ћете да направите ефикасније тачне и скалабилне упите за све ваше потребе везане за датум и време у МиСКЛ-у.