2017-08-13 32 views
1

我想创建一个表格,一旦添加条目就会自动生成运行日期。在getdate()上创建带有字符串的表格

CREATE TABLE ProjectDate (
Year varchar(10) 
,TotalOrders varchar(15) 
,RunDate date NOT NULL DEFAULT GETDATE()) 

我应该怎么修改上面的语句添加像“项目执行时间” +运行日期是上述GETDATE()文本?

这是我想有结果:

Year TotalOrders RunDate 
2005 1379 Project Run On 8/13/2017 
2006 3692 Project Run On 8/13/2017 
2007 12443 Project Run On 8/13/2017 
2008 13951 Project Run On 8/13/2017 
+0

如果你的代码工作,你是不是使用MySQL。我用SQL Server替换该标签。 –

+1

'RunDate'作为'varchar'会打乱你,如果你想排序项目。我有一种感觉,有一个更好的地方可以追加静态文本'Run On',可能是一个读取这个表格数据的程序或程序。 – niksofteng

回答

2

你可以把函数调用作为默认,所以这将工作:

CREATE TABLE ProjectDate (
    Year varchar(10), 
    TotalOrders varchar(15), 
    RunDate varchar(255) NOT NULL DEFAULT CONCAT('Project Run On ', CONVERT(VARCHAR(10), GETDATE(), 121)) 
); 

注:我更喜欢ISO标准格式YYYY-MM-DD。

这是Rextester

+0

哇我一直在寻找SQL小提琴替代品。 – niksofteng

+0

当我尝试添加值时,出现以下错误: 消息241,级别16,状态1,行1 从字符串转换日期和/或时间时转换失败。 INSERT INTO ProjectDate(年,TotalOrders) VALUES \t(2005,1379),(2006,3692),(2007,12443),(2008,13951) – Steve

+0

@Steve。 。 。这真的很奇怪。它运行时,我运行它(由rextester链接证明)。你声明'RunDate'是'varchar'吗? –

2

为什么要污染一个有用日期值通过将其转换成一个无意义/冗余字符串?

这确实属于表示层。这岂不使查询更有意义:

Select * 
     ,Msg = Format(RunDate,'Projec\t Run On M/dd/yyyy') 
From ProjectDate 
Where DatePart(YEAR,RunDate)=2017