我想创建一个像这样的列:
create table dbo.t1
(
[Notification_Month] datepart(mm, [date]) null,
)
我想将月份存储为日期属性,而不存储日期的其他部分。我知道这是一个奇怪的问题,但是WPF应用程序正在使用此表,因此如果SQL Server允许使用此表,则限制日期输入会更容易,但如果没有,我可能会发现使用c#的冗长而复杂的解决方案。
如果无法实现,我还有其他一些解决方法的想法,但在我说不是之前,请三思而后行,始终最好检查一下堆栈。
尽管您仍然必须将[date]存储为DATE类型,但是您可以使用计算列:
Create Table yourTable(
[NOTIFICATION_MONTH] DATE,
, [MONTH_NOTIFIED] as DATEPART(MONTH, [NOTIFICATION_MONTH])
)
添加PERSISTED
将其保存在表中。没有它,它将每次自动计算。
在MSDN CREATE TABLE页面上,computed_column_expression下:
是一个表达式,用于定义计算列的值。计算列是虚拟列,除非该列被标记为PERSISTED,否则它不会物理存储在表中。该列是根据使用同一表中其他列的表达式计算得出的。例如,一个计算列可以具有以下定义:成本AS价格*数量。[...]
另一个选择是:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句