如何在mysql中有效地處理日期和時間

學習在SQL中管理日期和時間以及指定與時間相關的資料庫查詢所需的所有命令。...

日期和時間很重要,它們有助於保持事物的有序性,並且是任何軟體操作不可或缺的一個方面。

Use the date wisely in SQL

在資料庫中高效地使用它們有時看起來很混亂,不管是跨不同的時區工作、新增/減去日期,還是其他操作。

學習各種MySQL函式,以便輕鬆地處理和管理資料庫中的日期/時間。

使用時區

為了幫助保持標準化,您應該只使用UTC時區中的日期/時間。每次建立到MySQL資料庫的連線時,都應該將時區切換到UTC,這可以透過以下SQL語句完成:

SET TIME_ZONE = '+0:00'

由於所有日期現在都將儲存在UTC中,所以您總是知道您正在使用什麼,使事情更加簡單和直接。

必要時,您可以使用方便的convert\u TZ()MySQL函式輕鬆地轉換任何datetime/timestamp值的時區。首先需要知道偏移量,例如,北美西海岸的PST是UTC-08:00,因此可以使用:

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

結果是2021-02-04 13:47:23,這是完全正確的。傳遞給CONVERT\u TZ()的三個引數是第一個開始的日期時間/時間戳(使用now()表示當前時間),第二個引數總是“+0:00”,因為資料庫中的所有日期都強制為UTC,最後一個引數是我們希望將日期轉換為的偏移量。

加減日期

很多時候,您需要新增或減去日期,例如,如果您需要檢索一週前的記錄,或者從現在開始安排一個月的時間。

值得慶幸的是,MySQL擁有出色的DATE\u ADD()和DATE\u SUB()函式,使這項任務非常簡單。例如,可以使用SQL語句從當前日期減去兩週:

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

如果您希望在現有時間戳上新增三天,則可以使用:

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

兩個函式的工作原理相同,第一個引數是開始的時間戳,第二個引數是要加或減的間隔。第二個引數的格式總是相同的,從單詞interval開始,後跟一個數字值和interval本身,可以是以下任意值:second、minute、hour、day、week、month、quarter、year。

例如,如果要檢索過去34分鐘內發生的所有登入,可以使用SQL語句,例如:

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

如您所見,這將從logins表中檢索登入日期大於當前時間減去45分鐘的所有記錄,換句話說,就是過去的45分鐘。

獲取日期之間的差異

有時你需要知道兩次約會之間經過了多少時間。使用DATEDIFF函式,您可以很容易地獲得兩個不同日期之間的天數,例如下面的SQL語句:

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

DATEDIFF函式接受兩個引數,這兩個引數都是日期/時間戳,並給出它們之間的天數。上面的例子將顯示從2020年12月15日到今天的天數。

要獲取兩個日期之間的秒數,可以使用To_seconds()函式,例如:

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

這將導致提供的兩個日期之間的秒數。

從日期中提取段

有各種MySQL函式可以讓您輕鬆地從日期中提取特定的片段,例如如果您只想要月份、一年中的某一天或某個小時。下面是一些此類函式的示例:

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

上面的SQL語句將導致02,即當前時間,以及196,因為9月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)

例如,如果您只想檢索建立所有使用者的月份和年份,則可以使用SQL語句,例如:

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

這將檢索users表中的所有記錄,並顯示每個使用者在中建立的id、、月份和年份。

按日期期間分組記錄

date函式的一個很好的用法是能夠在SQL語句中使用groupby按日期段對記錄進行分組。例如,您可能希望將2020年所有訂單的總金額按月份分組。您可以使用SQL語句,例如:

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條記錄,顯示年度每個月訂購的總金額。

請注意,為了獲得更好的索引效能,最好避免在SQL語句的WHERE子句中使用諸如YEAR()之類的日期函式,而是使用BETWEEN運算子,如上面的示例所示。

不要再和約會混淆了

使用以上知識,您現在可以在各種用例中高效地處理、翻譯和執行日期和時間操作。

為了簡單起見,請記住在處理日期時始終使用UTC,並利用以上提示在軟體中有效地管理日期,無論是完成簡單的計算還是輕鬆地按日期週期分組的報表。

如果您對SQL有點陌生,請確保簽出這些基本的SQL命令,以幫助改進SQL使用。

  • 發表於 2021-03-26 17:00
  • 閱讀 ( 47 )
  • 分類:程式設計

你可能感興趣的文章

如何用java連線mysql資料庫

... 在本文中,讓我們看看連線到MySQL資料庫的詳細資訊以及如何使用它執行一些查詢。 ...

  • 發佈於 2021-03-11 17:39
  • 閲讀 ( 49 )

如何透過chrome擴充套件將gmail變成待辦事項列表和日曆

如果你正在尋找一種更簡單的方式將你的電子郵件或待辦事項連線到你的日曆上,那麼只需使用Gmail即可。Google Chrome的這個擴充套件將透過完全連結的工具提高您的生產力。你可以節省時間,完成事情,永遠不會忘記一個方便的...

  • 發佈於 2021-03-14 10:55
  • 閲讀 ( 83 )

如何修復“檢查你的連線,再試一次”在谷歌播放商店

... 您的**使用一個名為hosts的檔案來定義如何連線到internet上的各種服務。有時,此檔案有問題,這會導致許多服務無法在您的**上執行,包括googleplay商店。 ...

  • 發佈於 2021-03-17 07:19
  • 閲讀 ( 54 )

youtube壞了?下面是如何修復它

... 如何在chrome上修復youtube ...

  • 發佈於 2021-03-18 10:24
  • 閲讀 ( 62 )

最好的電子郵件應用程式為您的iphone你必須嘗試

... 以下是ProtonMail如何脫穎而出的摘要: ...

  • 發佈於 2021-03-18 20:22
  • 閲讀 ( 48 )

如何在raspberry pi上託管wordpress站點

... 下面介紹如何在本地和web上的Raspberry Pi和宿主網站上設定Apache、MySQL和PHP。 ...

  • 發佈於 2021-03-21 11:33
  • 閲讀 ( 43 )

mysql資料庫模式編寫入門指南

... 在您的模式就位後,確保您知道如何將其與這些基本的SQL命令一起使用。 ...

  • 發佈於 2021-03-26 19:24
  • 閲讀 ( 55 )

如何使用sql連線一次查詢多個數據庫表

... 讓我們探索如何從多個數據庫表中準確地檢索所需的資料,以及各種可用的聯接,這些聯接允許您提取所需的準確結果。 ...

  • 發佈於 2021-03-27 04:02
  • 閲讀 ( 43 )

如何透過本課程更有效地處理業務和專案

...,哪些任務需要連續操作。在今天的環境中,你應該知道如何管理專案,並在不確定的情況下處理它們。為此,你需要接受培訓,最好的入門方法就是學習專案管理。 ...

  • 發佈於 2021-03-28 04:22
  • 閲讀 ( 54 )

如何在outlook中使用“後續”選項

Outlook最有用、最不易理解的選項之一是Follow-Up,它是該程式的電子郵件提醒工具。如果你在郵件不再出現在你收件箱的首頁後,很難記得回覆郵件,那麼這個工具就是為你準備的。 “跟進”會提醒您選擇某個日期的電子郵件,...

  • 發佈於 2021-04-02 13:18
  • 閲讀 ( 57 )
yplb9714
yplb9714

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦