![](/img/trans.png)
[英]How to insert datetime value as dd-mmm-yyyy hh:mm:ss AM/PM format in SQL Server
[英]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()
返回一個字符串。 它們不兼容。
也許您希望period
為char(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.