Како ефикасно радити са датумима и временима у МиСКЛ -у

Како ефикасно радити са датумима и временима у МиСКЛ -у

Датуми и времена су важни, помажу да се ствари организују и саставни су аспект било које софтверске операције.





Ефикасан рад са њима унутар базе података понекад може изгледати збуњујуће, било да ради у различитим временским зонама, додавању / одузимању датума и другим операцијама.





Научите различите доступне МиСКЛ функције за једноставно руковање датумима и временима у вашој бази података и управљање њима.



Рад са временским зонама

Да бисте стандардизовали ствари, требало би да радите само са датумима / временима у УТЦ временској зони. Сваки пут када успоставите везу са МиСКЛ базом података, требало би да пребаците временску зону на УТЦ, што се може урадити помоћу следеће СКЛ наредбе:

SET TIME_ZONE = '+0:00'

Пошто ће сви датуми бити сачувани у УТЦ -у, увек знате са чиме радите, чинећи ствари поједностављеним и јасним.



како пронаћи ип адресу на штампачу

Када је потребно, можете лако претворити временску зону било које вредности датума / временске ознаке при руци ЦОНВЕРТ_ТЗ () МиСКЛ функција. Морате прво знати помак, на пример, ПСТ на западној обали Северне Америке је УТЦ -08: 00, тако да можете да користите:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

Ово резултира у 2021-02-04 13:47:23 што је потпуно тачно. Три аргумента су прешла на ЦОНВЕРТ_ТЗ () су први датум / временска ознака са којом почињете (користите сада () за тренутно време), друга ће увек бити '+0: 00' пошто су сви датуми приморани на УТЦ у бази података, а последњи је помак у који желимо да конвертујемо датум.





Додавање / одузимање датума

Много пута морате да додајете или одузимате датуме, на пример ако требате да преузмете записе од пре недељу дана или да закажете нешто за месец дана.

Срећом, МиСКЛ има одличне резултате ДАТЕ_АДД () и ДАТЕ_СУБ () функције које овај задатак чине изузетно једноставним. На пример, помоћу СКЛ наредбе можете одузети две недеље од тренутног датума:





SELECT DATE_SUB(now(), interval 2 week);

Ако бисте уместо тога желели да додате три дана постојећој временској ознаци, користили бисте:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Обе функције раде исто, први аргумент је временска ознака са којом почињете, а други аргумент је интервал за додавање или одузимање. Други аргумент је увек форматиран исто почевши од речи интервал након чега следи нумеричка вредност и сам интервал, који може бити било шта од следећег: други, минут, сат, дан, недеља, месец, квартал, година.

На пример, ако желите да преузмете све пријаве које су се догодиле у последња 34 минута, можете да користите СКЛ израз, као што су:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Као што видите, ово би дохватило све записе из пријаве табела са датумом пријављивања већим од тренутног времена минус 45 минута, или другим речима, последњих 45 минута.

Добијте разлику између датума

Понекад је потребно да сазнате колико је времена прошло између два датума. Можете лако добити број дана између два различита датума помоћу ДАТЕДИФФ функцију, као што је доња СКЛ наредба:

SELECT DATEDIFF(now(), '2020-12-15');

Тхе ДАТЕДИФФ функција узима два аргумента, оба су датумске / временске ознаке и даје број дана између њих. Горњи пример ће показати број дана протеклих од 15. децембра 2020. до данас.

Да бисте добили број секунди између два датума, ТО_СЕЦОНДС () функција може бити корисна, на пример:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Ово ће резултирати бројем секунди између два наведена датума.

Издвоји сегменте из датума

Постоје различите МиСКЛ функције које вам омогућавају да лако извучете одређене сегменте из датума, на пример ако желите само месец, дан у години или сат. Ево неколико примера таквих функција:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Горе наведени СКЛ изрази би резултирали 02 , тренутни сат и 196 пошто је 15. септембар 196. дан у години. Ево списка свих доступних функција издвајања датума, од којих свака има само један аргумент, а датум је извучен из:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

На пример, ако сте можда само желели да преузмете месец и годину у којој су сви корисници створени, можете да користите СКЛ израз, попут:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Ово ће дохватити све записе унутар корисника табелу и приказати ид#, месец и годину у којој је сваки корисник креиран.

Груписање записа према датумском периоду

Једна одлична употреба функција датума је могућност груписања записа према датумском периоду помоћу ГРУПА ОД унутар ваших СКЛ наредби. На пример, можда желите да повучете укупан износ свих налога у 2020. груписаних по месецима. Можете користити СКЛ наредбу као што су:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Ово ће дохватити све наруџбе постављене у 2020. години, групирати их према мјесецу када су створене и вратити 12 записа који показују укупан износ наручен сваког мјесеца у години.

Имајте на уму да је за боље перформансе индекса увек најбоље избегавати коришћење функција датума, као што су ГОДИНА () унутар клаузуле ВХЕРЕ СКЛ наредби, и уместо тога користите ИЗМЕЂУ оператора као што је приказано у горњем примеру.

Никада више немојте бити збуњени датумима

Користећи горње знање, сада можете ефикасно радити, преводити и изводити операције у датумима и временима у широком спектру случајева употребе.

Не заборавите да увек користите УТЦ при раду са датумима ради једноставности и користите горе наведене савете за ефикасно управљање датумима у вашем софтверу, било да се ради о једноставним прорачунима или лаком извлачењу извештаја груписаних по периодима.

Ако сте тек почели да радите са СКЛ -ом, погледајте ове битне СКЛ команде да бисте побољшали употребу СКЛ -а.

Објави Објави Твеет Емаил Како да креирате професионалне извештаје и документе у програму Мицрософт Ворд

Овај водич испитује елементе професионалног извештаја и прегледа структурирање, обликовање и финализацију вашег документа у програму Мицрософт Ворд.

Прочитајте следеће
Повезане теме О аутору Матт Дизак(18 објављених чланака) Више од Матта Дизака

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили