iT邦幫忙

0

MSSQL datepart 的類型是什麼

  • 分享至 

  • xImage

您好:

請問 如下圖,

https://ithelp.ithome.com.tw/upload/images/20230817/20104095QDygq0LzyT.png

我要寫一個FUNCTION 沿用datepart 傳入, 那這一個 datepart 要設什麼型別?

比如我要

@datepart_str 這一個 可以值接用SQL 的 型別嗎?
或者,我傳入 VARCHAR(4),要如何轉為 Year,Day 等

CREATE function fn_datetime_diff (  
        @datepart_str  varchar(4) ,
              
        @date_s varchar(8), @time_s varchar(6), 
		@date_e varchar(8), @time_e varchar(6)
)Returns int As  
BEGIN
--select  @date_s='1120801',  @date_e='1120801', @time_s='095901', @time_e='100201' 
DECLARE @i as int;

SELECT   @i=
       DATEDIFF(
	       CASE  WHEN  @datepart_str='yy' then yy
		   END



        , CONVERT(DATETIME, STUFF(STUFF(STUFF(
                                  CONVERT(VARCHAR(8), case WHEN len(@date_s)<=7 THEN @date_s+19110000 ELSE @date_s end  ) +@time_s
							, 9, 0, ' '), 12, 0, ':'), 15, 0, ':'))
	   , CONVERT(DATETIME, STUFF(STUFF(STUFF(
                                  CONVERT(VARCHAR(8), case WHEN len(@date_e)<=7 THEN @date_e+19110000 ELSE @date_e end  ) +@time_e
							, 9, 0, ' '), 12, 0, ':'), 15, 0, ':'))
        ) 

RETURN @i
END;
GO

謝謝!

感覺..好像多此一舉@@?
datepart 已經是各種轉換了~
看不懂你的目的到底是@@....
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
allenlwh
iT邦高手 1 級 ‧ 2023-08-17 13:34:56
最佳解答
noway iT邦研究生 1 級 ‧ 2023-08-17 13:51:34 檢舉

您好:
沒搓清楚,我是要裡面 的 Year,Hour 等 的型別,或如何傳入,轉換

我有更新問題
謝謝

allenlwh iT邦高手 1 級 ‧ 2023-08-17 14:34:05 檢舉

換個方式,把條件式寫在外面,case when 改成if。

DECLARE @i as int;

if @datepart_str='yy'
begin
	SELECT @i=DATEDIFF(yy,date1,date2)
end

if @datepart_str='mm'
begin
	SELECT @i=DATEDIFF(mm,date1,date2)
end
0
pilipala
iT邦研究生 5 級 ‧ 2023-08-17 21:49:50

文件上 DateDiff datepart 參數有這段說明,你的想法是沒有辦法實現的

https://ithelp.ithome.com.tw/upload/images/20230817/201229864Y9Uovy0G6.jpg

我要發表回答

立即登入回答