繁体   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