2017-08-13 53 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 
相關問題