sqlserver資料庫如何每時/每天/每月/每年任取一條資料
最近用sqlserver+.NET做一個專案,需求是要用圖表來顯示資料,而且是每時/每天/每月/每年任取一條資料,即如果使用者選擇時間的區域是同一天,那麼按區域的每小時取一條記錄,如果區間是一個月,那麼每天任取一條資料,如果區間是一年,每個月任取一條資料。。。。。
開始根本毫無頭緒,甚至是想用很暴力的方式解決(多寫幾條sql語句),最後在別人提供的小demo裡面發現瞭解決方法。
閒話不說,看sql語句:
select *
from tempview a
where not exists(
select 1
from tempview
where convert(varchar(13),receiveTime,120)=convert(varchar(13),a.receiveTime,120) and receiveTime>a.receiveTime
);
先解釋下convert函式:convert函式是用來格式化日期的方法(還有其他用處,自查)。第一個引數很明顯是最後返回的資料型別及型別長度(重要),第二個就是要格式化的物件,第三個就是要化成的格式值,如:這裡的120 代表的是:yyyy-mm-dd hh:mi:ss(24h)。
具體的每個引數代表什麼含義,可以訪問w3c: http://www.w3school.com.cn/sql/func_convert.asp
為什麼第一個引數加了個重要呢,因為型別長度的變化,將是解決問題的核心。
每月: 看一下要化成的格式:yyyy-mm-dd hh:mi:ss 當receiveTime只有年份相同時,我們就能夠通過比較月份是否相同來選取月份。這時將長度限制到yyyy(4)就能達到效果:所以SQL語句將變為這樣:
select *
from tempview a
where not exists(
select 1
from tempview
where convert(varchar(4),receiveTime,120)=convert(varchar(4),a.receiveTime,120) and receiveTime>a.receiveTime
);
那麼同理可得:每月:yyyy-mm varchar(7);
每日:yyyy-mm-dd varchar(10);
每日:yyyy-mm-dd hh varchar(13);
PS:注意應該要先把使用者選擇範圍內的資料先篩選出來,然後再基於這些資料選擇,所以上面的SQL語句用的是檢視。
注意:上面的SQL語句不算隨機取,因為他始終取滿足條件的最後一條資料。
相關文章
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- Mysql按時間分組查詢(每天|每月|每年)MySql
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 新增時--sqlserver資料庫跟蹤SQLServer資料庫
- sql 按著時間分組,每組取 20 條資料SQL
- 【SQLServer】如何檢視某個資料庫中,每個table的資料量大小SQLServer資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- sql 多組條資料取最新的一條資料SQL
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 如何透過一條資料庫語句做資料分析資料庫
- SqlServer資料庫資料恢復報告SQLServer資料庫資料恢復
- Jtti:sqlserver怎麼清空資料庫資料JttiSQLServer資料庫
- SQLServer批量新增資料庫SQLServer資料庫
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- Sqlserver資料庫使用 .bak 檔案還原資料庫SQLServer資料庫
- sql取每組最新資料SQL
- jmeter 連線 sqlserver 資料庫JMeterSQLServer資料庫
- SQLSERVER 資料庫效能的基本SQLServer資料庫
- Android連線資料庫sqlserverAndroid資料庫SQLServer
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- 模式:每個服務一個資料庫模式資料庫
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- 實時資料庫與時序資料庫資料庫
- 2023年全球每個移動連線每月資料使用量(附原資料表)
- SQLSERVER學習1——資料庫概念SQLServer資料庫
- SQLServer查詢所有資料庫大小SQLServer資料庫
- sqlserver 資料庫收縮的方法SQLServer資料庫
- sqlserver資料庫下載安裝SQLServer資料庫
- JDBC之連線sqlserver資料庫JDBCSQLServer資料庫
- sqlserver根據條件去除重複資料SQLServer
- Oracle:重複資料去重,只取最新的一條資料Oracle
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- 利用反射讀取資料庫資料反射資料庫
- MyBatis 查詢資料時屬性中多對一的問題(多條資料對應一條資料)MyBatis
- C#中得到每週,每月,每季,每年的年初末日期C#
- 向資料庫中插入一條新的資料,並返回新增資料的ID資料庫
- sqlserver收縮資料庫、收縮資料檔案的操作SQLServer資料庫
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer