获取指定日期相关DATENAME和DATEPART数据

datename和datepart有何区别,insus.net写成一个函数,可以方便查询与对比:

一个是返回一个字符串,另一个是返回一个整数。

 

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-10
-- update date: 2019-05-10
-- description: 获取指定日期相关datename和datepart数据
-- =============================================

create function [dbo].[tvf_datedatas]
(
    @specifieddate datetime2
)
returns @dumpweektable table
(
    [datepart] nvarchar(max) not null,
    [datename_returnvalue] nvarchar(max) null,
    [datepart_returnvalue] nvarchar(max) null
)
as
begin    
    insert into @dumpweektable ([datepart],[datename_returnvalue],[datepart_returnvalue]) values 
    ('year, yyyy, yy',datename(yy,@specifieddate),datepart(yy,@specifieddate)),
    ('quarter, qq, q',datename(q,@specifieddate),datepart(q,@specifieddate)),
    ('month, mm, m',datename(m,@specifieddate),datepart(m,@specifieddate)),
    ('dayofyear, dy, y',datename(y,@specifieddate),datepart(y,@specifieddate)),
    ('day, dd, d',datename(d,@specifieddate),datepart(d,@specifieddate)),
    ('week, wk, ww',datename(ww,@specifieddate),datepart(ww,@specifieddate)),
    ('weekday, dw',datename(dw,@specifieddate),datepart(dw,@specifieddate)),
    ('hour, hh',datename(hh,@specifieddate),datepart(hh,@specifieddate)),
    ('minute, n',datename(n,@specifieddate),datepart(n,@specifieddate)),
    ('second, ss, s',datename(s,@specifieddate),datepart(s,@specifieddate)),
    ('millisecond, ms',datename(ms,@specifieddate),datepart(ms,@specifieddate)),
    ('microsecond, mcs',datename(mcs,@specifieddate),datepart(mcs,@specifieddate)),
    ('nanosecond, ns',datename(ns,@specifieddate),datepart(ns,@specifieddate)),
    ('tzoffset, tz',datename(tz,@specifieddate),datepart(tz,@specifieddate)),
    ('iso_week, isowk, isoww',datename(isoww,@specifieddate),datepart(isoww,@specifieddate))
    return
end

go

 

传入一个日期,试试运行结果:

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐