Mysql 兩個日期欄位相減得到秒

2021-03-02 軟測小棧

前言:測試工程師日常,為了驗證欄位:平均回復時長 顯示是否正確,所以需要將2個日期欄位進行相減,得出的數據轉化為小時,然後看小時落在哪個區間端裡邊,前端就顯示哪個區間端。規則:<=5分鐘,顯示5分鐘內;<=30分鐘,顯示30分鐘內;<=1小時,顯示1小時內,依次類推,直到>=24小時,顯示未知。

一、初步計算

測試數據如下,需求是:將欄位dtm_accept 和欄位dtm_crt 兩列進行相減,得出的數據累加並除以條數,根據返回的結果,取對應的區間。

SQL語句:

select dtm_accept , dtm_crt,
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test

執行上面的sql語句,得出以下:

手動將aSecond這一列,相加 並換算為小時數,最後的結果=小時數/6(條數)

179740 秒=49.9277778 時

49.93/6=8.32 所以顯示的區間數應該是:9小時內

二、進一步優化:

select
dtm_accept ,
dtm_crt,
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test
union ALL
select
' ' ,
'合計',
SUM(TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) )
from test

通過sql語句,直接計算出毫秒數,轉成小時在除以6 ,

49.93/6=8.32 所以顯示的區間數應該是:9小時內

三、擴展:將帶毫秒的時間格式化為不帶毫秒的時間

select dtm_upt,DATE_FORMAT(dtm_upt,"%Y-%m-%d %H:%i:%S") from test

相關焦點

  • 兩個日期如何相減得到天數
    那要如何計算這兩個日期差呢?首先,我們要明白,案例中的「日期」並不是真正意思上的日期,這裡可以借用TEXT函數進行轉換,在單元格中輸入公式=TEXT(A2,"0000-00-00")說明:TEXT函數表示根據指定的格式將數值轉換為文本TEXT函數語法結構=TEXT(數據,格式代碼)
  • MySQL日期、時間函數總結
    mysql> select now();+-+| now() |+-+| 2021-08-12 20:20:46 |+-+獲得當前日期+時間(date + time)函數:sysdate()sysdate()日期時間函數跟now()類似,不同之處在於:now()在執行開始時值就得到了,sysdate()在函數執行時動態得到值
  • mysql count(*)count(1)count(欄位)區別
    收錄於話題 #mysql所以,count(*)、count(主鍵 id) 和 count(1) 都表示返回滿足條件的結果集的總行數;而 count(欄位),則表示返回滿足條件的數據行裡面,參數「欄位」不為 NULL 的總個數。
  • 技術分享 | MySQL:count(*)、count(欄位) 實現上區別
    繼上一篇文章:MySQL:查詢欄位數量多少對查詢效率的影響 👈我們繼續來討論一下 count(*)、count(欄位)實現上的區別。注意我們這裡都使用 Innodb 做為存儲引擎,不討論其他引擎。因為了有了前面的討論,更容易看出它們的區別,這裡我們有如下注意點:我們需要做到執行計劃一樣,這裡以全表掃描為例。
  • MySQL中的日期函數大全
    收錄於話題 #mysql市面上的資料庫特別多,儘管使用的語法趨於一致,但是各自內部支持的函數略有差異,之前,給大家分享了SQL Server中常見的日期函數的用法,如果需要了解,可以看看文章末尾的相關閱讀。今天小編總結下MySQL中關於日期函數的使用方法做一個合集,大家可以轉發收藏,後續說不定會使用得到。
  • MySQL和Oracle的添加欄位的處理差別 (r10筆記第73天)
    dbms_rowid.ROWID_BLOCK_NUMBER(rowid) as block#,dbms_rowid.ROWID_ROW_NUMBER(rowid) as row#,a.* from test.USERS a where rownum<2;     FILE#     BLOCK#       ROW#     USERID USER_NAME         24    1569619
  • excel怎麼計算兩個日期之間天數和時間計算
    在excel中,兩個日期直接相減就可以得到兩個日期間隔的天數,如下圖:計算兩個日期之間的天數,也可以用隱藏函數DATEDIF函數來完成,公式如下:=DATEDIF(A2,B2,"d")首先,最簡單的是兩個時間直接相減即可得到時間差。但是注意,存儲結果的單元格要設置成時間格式。
  • MySQL技術內幕:時間和日期數據類型
    【IT168 技術】MySQL資料庫中有五種與日期和時間有關的數據類型,各種日期數據類型所佔空間如表2-1所示。  DATETIME和 DATE  DATETIME佔用8位元組,是佔用空間最多的一種日期類型。它既顯示了日期,同時也顯示了時間。
  • mysql怎麼處理大表在不停機的情況下增加欄位
    /bin/bash# gjcfor i in  {1..1000000000}# 訪問次數1000000000,按需調整即可do    id=$RANDOM#生成隨機數mysql -uroot -p'123456' --socket=/data/mysql3306/tmp/mysql.sock  -e "selecta.
  • 【問答】MySQL如何給欄位添加注釋
    下面的命令行或則圖形界面均在軟體Navicat中運行create table student( s_no int not null comment '學號', s_name varchar(100) comment '姓名') comment = '學生'如上面的創建表語句,欄位
  • MySQL 插入數據 | Mysql Insert Data
    我們可以使用此語句檢索與指定條件匹配的所有欄位或指定欄位的記錄。還可以使用各種腳本語言進行數據查詢,例如PHP、Ruby等等。你可以使用星號(*)來代替其他欄位,SELECT語句會返回表的所有欄位數據你可以通過OFFSET指定SELECT語句開始查詢的數據偏移量。默認情況下偏移量為0。
  • MySQL函數大全及用法示例(三)
    ,odbc標準)  mysql> select dayofweek('1998-02-03');      -> 3     weekday(date)    返回日期date是星期幾(0=星期一,1=星期二,……6= 星期天)。
  • MySQL面試題集錦,據說知名網際網路公司都用
    31、我們如何得到受查詢影響的行數?行數可以通過以下代碼獲得:SELECT COUNT(user_id)FROM users;32、Mysql查詢是否區分大小寫?35、mysql_fetch_array和mysql_fetch_object的區別是什麼?以下是mysql_fetch_array和mysql_fetch_object的區別:mysql_fetch_array() - 將結果行作為關聯數組或來自資料庫的常規數組返回。mysql_fetch_object - 從資料庫返回結果行作為對象。
  • 日期格式處理的幾種方法
    由於庫表結構、欄位類型以及具體業務邏輯等多種原因,資料庫中往往同時存在多種日期格式,又由於數據需求中可能有較為複雜多變的計算規則,需要對多種日期格式進行相互轉換和計算。今天我們就來梳理一下SQL中常用的日期處理函數。
  • MySQL中如何針對表進行添加、修改、刪除欄位?
    前期的準備工作,還是一樣的,進入mysql,進入我們自己創建的資料庫mysql_test,找到需要修改的表,先來看一下目前表的結構:desc emp;追加birthday欄位顯示添加成功,注意,這裡添加的欄位,是默認在最後面追加的,而且在添加欄位的時候,需要將欄位名稱,及對應的欄位類型,都說明清楚,不然無法添加。
  • MySQL那些與日期和時間相關的函數
    【IT168 技術】日期函數可能是比較常使用的一種函數。下面介紹一些最為常用的日期函數及一些容易忽略的問題。  1. NOW、CURRENT_TIMESTAMP和SYSDATE  這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。
  • MYSQL資料庫操作案例
    Enter password:******mysql> use RUNOOB;Database changedmysql>注意:所有的資料庫名,表名,表欄位都是區分大小寫的。MySQL 數據類型MySQL支持多種類型,大致可以分為三類:數值、日期/時間和字符串(字符)類型。
  • 【社區精選43】Excel導入MySQL數據出現欄位錯行原因&解決方案
    也就是對比MySQL資料庫原表的列的順序,會發現該表的表頭與資料庫中原表的欄位列不一樣。當導入數據時候,excel會對原表頭進行重新排序。本案例中:導入的數據表頭是按欄位名稱的英文字母的升序順序。而不是按原來數據表中的欄位順序。這會導致當導入的數據出現格式錯誤無法導入。
  • 去 BAT 面試,總結了這 55 道 MySQL 面試題!
    31、我們如何得到受查詢影響的行數?行數可以通過以下代碼獲得:SELECT COUNT(user_id)FROM users;32、Mysql查詢是否區分大小寫?以下是mysql_fetch_array和mysql_fetch_object的區別:mysql_fetch_array() - 將結果行作為關聯數組或來自資料庫的常規數組返回。mysql_fetch_object - 從資料庫返回結果行作為對象。
  • mysql的這幾個坑你踩過沒?真是防不勝防
    二、有符號和無符號以前我們公司在項目開發之初制定開發規範時,對mysql的int類型欄位定義成有符號,還是無符號問題專門討論過。觀點一:對於能夠確定裡面存的值一定是正數的欄位,定義成UNSIGNED無符號的,可以節省一半的存儲空間。