最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server 2022 新函數(shù)之DATETRUNC 日期截?cái)嘣斀?/h1>
 更新時(shí)間:2026年04月23日 14:39:59   作者:二月十六  
DATETRUNC是SQLServer2222引入的日期截?cái)嗪瘮?shù),用于將時(shí)間值截?cái)嗟街付ň?與以前使用DATEADD、DATEDIFF組合實(shí)現(xiàn)相比,,DATETRUNC更簡(jiǎn)潔、直觀,本文介紹SQL Server 2022 新函數(shù)之DATETRUNC日期截?cái)嗟南嚓P(guān)知識(shí),感興趣的朋友一起看看吧

前言

DATETRUNC 是 SQL Server 2022 引入的日期截?cái)嗪瘮?shù),可以將日期/時(shí)間值截?cái)嗟街付ǖ木龋ㄈ缃財(cái)嗟侥?、月、周、日、小時(shí)等)。在統(tǒng)計(jì)報(bào)表、時(shí)間分組等場(chǎng)景中非常實(shí)用,比以前用 CONVERT、DATEADD、DATEDIFF 組合實(shí)現(xiàn)的寫法簡(jiǎn)潔得多。

語法

DATETRUNC ( datepart, date )
參數(shù)說明
datepart截?cái)嗑龋С郑簓ear、quarter、month、week、iso_week、dayofyear、day、hour、minute、second、millisecond、microsecond、nanosecond
date日期/時(shí)間表達(dá)式,支持 date、time、datetime、datetime2、datetimeoffset、smalldatetime

返回值:與輸入?yún)?shù)相同的數(shù)據(jù)類型,小于截?cái)嗑鹊牟糠秩繗w零。

CREATE TABLE #Orders (
    OrderID     INT,
    CustomerID  INT,
    OrderDate   DATETIME2,
    Amount      DECIMAL(10, 2)
)
INSERT INTO #Orders VALUES
(1,  101, '2024-03-15 09:32:47.123', 1500.00),
(2,  102, '2024-03-15 14:05:22.456', 800.00),
(3,  101, '2024-03-20 11:18:33.789', 2300.00),
(4,  103, '2024-04-02 08:55:01.234', 620.00),
(5,  102, '2024-04-18 16:44:59.567', 1100.00),
(6,  101, '2024-05-07 10:22:15.890', 3200.00),
(7,  103, '2024-05-25 13:30:45.123', 950.00),
(8,  102, '2024-06-10 09:15:30.456', 1750.00)

一、按日截?cái)啵ㄈサ魰r(shí)間部分)

SELECT 
    OrderID,
    OrderDate,
    DATETRUNC(day, OrderDate) AS 截?cái)嗟饺?
FROM #Orders

結(jié)果:

OrderIDOrderDate截?cái)嗟饺?/th>
12024-03-15 09:32:47.1232024-03-15 00:00:00
22024-03-15 14:05:22.4562024-03-15 00:00:00
32024-03-20 11:18:33.7892024-03-20 00:00:00
.........

老寫法對(duì)比:CONVERT(DATE, OrderDate) 或 CAST(OrderDate AS DATE),注意 DATETRUNC 保留原始數(shù)據(jù)類型(返回 DATETIME2),而不是轉(zhuǎn)為 DATE 類型。

二、按月截?cái)啵ńy(tǒng)計(jì)月度數(shù)據(jù))

-- 按月匯總銷售額
SELECT 
    DATETRUNC(month, OrderDate) AS 月份,
    COUNT(*)                    AS 訂單數(shù),
    SUM(Amount)                 AS 總金額
FROM #Orders
GROUP BY DATETRUNC(month, OrderDate)
ORDER BY 月份

結(jié)果:

月份訂單數(shù)總金額
2024-03-01 00:00:0034600.00
2024-04-01 00:00:0021720.00
2024-05-01 00:00:0024150.00
2024-06-01 00:00:0011750.00

老寫法對(duì)比:

-- 以前的寫法,需要組合多個(gè)函數(shù)
GROUP BY DATEADD(month, DATEDIFF(month, 0, OrderDate), 0)
-- 或者
GROUP BY YEAR(OrderDate), MONTH(OrderDate)

DATETRUNC 寫法更直觀,且結(jié)果直接是 DATETIME2 類型,可用于后續(xù)日期計(jì)算。

三、按季度截?cái)?/h2>
SELECT 
    DATETRUNC(quarter, OrderDate) AS 季度起始日,
    COUNT(*)                      AS 訂單數(shù),
    SUM(Amount)                   AS 總金額
FROM #Orders
GROUP BY DATETRUNC(quarter, OrderDate)
ORDER BY 季度起始日

結(jié)果:

季度起始日訂單數(shù)總金額
2024-01-01 00:00:0056320.00
2024-04-01 00:00:0033800.00

四、按周截?cái)啵↖SO 周,周一為第一天)

SELECT 
    OrderID,
    OrderDate,
    DATETRUNC(week,     OrderDate) AS 本周起始_周日,
    DATETRUNC(iso_week, OrderDate) AS 本周起始_周一
FROM #Orders
  • week:以周日為每周第一天(受 DATEFIRST 設(shè)置影響)
  • iso_week:以周一為每周第一天(ISO 8601 標(biāo)準(zhǔn),不受 DATEFIRST 影響)

推薦業(yè)務(wù)場(chǎng)景中優(yōu)先使用 iso_week,結(jié)果更可預(yù)期。

五、按小時(shí)截?cái)啵ㄟm合流量/日志分析)

SELECT 
    OrderID,
    OrderDate,
    DATETRUNC(hour, OrderDate)   AS 截?cái)嗟叫r(shí),
    DATETRUNC(minute, OrderDate) AS 截?cái)嗟椒昼?
FROM #Orders

結(jié)果:

OrderIDOrderDate截?cái)嗟叫r(shí)截?cái)嗟椒昼?/th>
12024-03-15 09:32:47.1232024-03-15 09:00:002024-03-15 09:32:00
22024-03-15 14:05:22.4562024-03-15 14:00:002024-03-15 14:05:00

六、與 DATEDIFF 結(jié)合:計(jì)算距本月初的天數(shù)

SELECT 
    OrderID,
    OrderDate,
    DATEDIFF(day, DATETRUNC(month, OrderDate), OrderDate) AS 當(dāng)月第幾天
FROM #Orders

結(jié)果:

OrderIDOrderDate當(dāng)月第幾天
12024-03-15 09:32:47.12314
42024-04-02 08:55:01.2341
62024-05-07 10:22:15.8906

七、支持的 datepart 匯總

datepart示例輸入截?cái)嘟Y(jié)果
year2024-03-15 09:322024-01-01 00:00
quarter2024-05-15 09:322024-04-01 00:00
month2024-03-15 09:322024-03-01 00:00
week2024-03-15(周五)2024-03-10(本周周日)
iso_week2024-03-15(周五)2024-03-11(本周周一)
day2024-03-15 09:32:472024-03-15 00:00:00
hour2024-03-15 09:32:472024-03-15 09:00:00
minute2024-03-15 09:32:472024-03-15 09:32:00
second2024-03-15 09:32:47.1232024-03-15 09:32:47

兼容性說明

版本支持情況
SQL Server 2022 及以上? 支持
SQL Server 2019 及以下? 不支持
Azure SQL Database? 支持(2022年4月起)

總結(jié)

DATETRUNC 填補(bǔ)了 SQL Server 長(zhǎng)期以來缺少日期截?cái)鄬S煤瘮?shù)的空白。以前需要 DATEADD + DATEDIFF 組合才能實(shí)現(xiàn)的邏輯,現(xiàn)在一個(gè)函數(shù)搞定:

  • 統(tǒng)計(jì)報(bào)表按年/月/季度/周分組:GROUP BY DATETRUNC(month, 日期列)
  • 去除時(shí)間部分:DATETRUNC(day, 日期列)(保留原類型,不變成 DATE)
  • 日志分析按小時(shí)/分鐘匯總:GROUP BY DATETRUNC(hour, 日期列)

簡(jiǎn)潔、直觀,推薦在 SQL Server 2022 環(huán)境中替換老寫法。

到此這篇關(guān)于SQL Server 2022 新函數(shù)之DATETRUNC 日期截?cái)嘣斀獾奈恼戮徒榻B到這了,更多相關(guān)SQL Server DATETRUNC 日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

阳东县| 榆林市| 闸北区| 花莲市| 西昌市| SHOW| 广饶县| 丹棱县| 六安市| 登封市| 奉节县| 渝北区| 襄城县| 如东县| 耿马| 正蓝旗| 四子王旗| 呼和浩特市| 莱西市| 建湖县| 巴彦淖尔市| 正镶白旗| 贵溪市| 灵宝市| 桦南县| 诸暨市| 绍兴市| 拜城县| 遵义市| 济阳县| 睢宁县| 桑日县| 贵州省| 连云港市| 乳源| 曲阜市| 西丰县| 富蕴县| 甘南县| 双流县| 平邑县|