是這樣的我剛寫好一段SQL
語法大概是這樣
exec sp_executesql N'DECLARE
@StartTime DATE = @startDateString, -- 開始時間
@EndTime DATE = @enddateString -- 結束時間
if (object_id(''tempdb.dbo.#MonthTime'') is not null)
drop table tempdb.dbo.#MonthTime
-- 創建臨時表#MonthTime存儲日期
CREATE TABLE #MonthTime
(
DayTime DATE
);
-- 迴圈獲取日期插入臨時表
WHILE @StartTime <= @EndTime
BEGIN
INSERT INTO #DateTime (DayTime)
VALUES (@StartTime);
SET @StartTime = DATEADD(DAY, 1, @StartTime);
END;
SELECT DayTime FROM #DateTime;
',N'@startDateString nvarchar(4000),@enddateString nvarchar(4000)',@startDateString=N'2023-07-01',@enddateString=N'2023-07-31'
結果大概是這樣
想請問如果我想改變日期格式
希望結果能變成
7月1日
7月2日
....
請問我該如何調整呢?
https://learn.microsoft.com/zh-tw/sql/t-sql/functions/format-transact-sql?view=sql-server-ver16
culture 可以選 zh-tw , culture 接受 .NET Framework 支援的所有文化特性作為引數,不限於 SQL Server 明確支援的語言。
原來還可以這樣寫,我晚點試試看 謝謝
另外語系可以省略~重點格式化字串要有N宣告 (Unicode)
declare @SetDate date = '2023/7/12'
select FORMAT(@SetDate, N'MM月dd日') SetDate
沒有加N~查詢出來的資料會變成 07?12?
tenno081
我在追加一個假設前面為民國年的方式XD..
declare @SetDate date = '2023/7/12'
select FORMAT(dateadd(year,-1911,@SetDate), N'民國yyy年MM月dd日') SetDate
--民國112年07月12日
參考~
declare @SetDate date = '2023/7/12'
select replace(right(convert(varchar, @SetDate, 111),5),'/','月') + '日'
所以你的SQL
SELECT replace(right(convert(varchar, DayTime, 111),5),''/'',''月'') + ''日'' DayTime
FROM #DateTime;
',N'@startDateString nvarchar(4000),@enddateString nvarchar(4000)',@startDateString=N'2023-07-01',@enddateString=N'2023-07-31'
感謝,我後來是用這樣解
VALUES (CAST(Month(@StartTime) AS NVARCHAR(2)) + ''月''
+ CAST(Day(@StartTime) AS NVARCHAR(2)) + ''日'','''','''');
tenno081
都可以呀~隨個人喜好寫SQL~
還是很感謝,我SQL就超爛,如果是C#早早就轉好了= =