簡體   English   中英

在 SQL 服務器中將上個月設置為“mmm”格式的默認值?

[英]Setting the previous month as a default value in 'mmm' format in SQL Server?

我想創建一個臨時表,其中期間始終是上個月的縮寫。 例如,今天的默認值為“Sep”。

我有這段代碼,但在嘗試向表中添加其他值后它會引發錯誤:

create table tmp_hfm 
( 
    Entity_Code nvarchar(15),
    HFM_Account nvarchar(15),
    HFM_Segment nvarchar(15),
    Period date default format(month(getdate()) - 1, 'mmmm')
)

我得到的錯誤:

從字符串轉換日期和/或時間時轉換失敗。

有人可以就此提出建議嗎?

嘗試這個:

CREATE TABLE tmp_hfm (
  Entity_Code NVARCHAR(15),
  HFM_Account NVARCHAR(15),
  HFM_Segment NVARCHAR(15),
  Period CHAR(3) DEFAULT FORMAT(DATEADD(MONTH, -1, GETDATE()), 'MMM')
);

如果需要指定文化,可以在'MMM'之后添加另一個參數:

CREATE TABLE tmp_hfm (
  Entity_Code NVARCHAR(15),
  HFM_Account NVARCHAR(15),
  HFM_Segment NVARCHAR(15),
  Period CHAR(3) DEFAULT FORMAT(DATEADD(MONTH, -1, GETDATE()), 'MMM', 'en-us')
);

這是一個 SQL 小提琴給你:鏈接

我不明白你想做什么。 您已將Period定義為date列。 FORMAT()返回一個字符串。 它們不兼容。

也許您希望periodchar(3) ,默認為format(dateadd(month, -1, getdate()), 'MMM')

對於“Sep”,我傾向於使用left(datename(month, dateadd(month, -1, getdate())), 3) ,除非您有理由更喜歡format()的國際化功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM