我有一個sybase 15數據庫,並且對於我的一個表,我想使列默認爲行插入的當前日期/時間。這可能嗎?在sybase中創建一個列,默認爲行插入的當前日期/時間
在Sybase文本,以下是說:
ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE
在我的數據庫,這並不做任何事情,因爲CURRENT DATE
無法識別。使用GETDATE
我有一個sybase 15數據庫,並且對於我的一個表,我想使列默認爲行插入的當前日期/時間。這可能嗎?在sybase中創建一個列,默認爲行插入的當前日期/時間
在Sybase文本,以下是說:
ALTER TABLE sales_order
MODIFY order_date DEFAULT CURRENT DATE
在我的數據庫,這並不做任何事情,因爲CURRENT DATE
無法識別。使用GETDATE
嘗試(),而不是
使用getDate()
是一個有效的解決方案,你必須有一個語法錯誤。試試像這樣:
create table test_tbl (
date_data DATETIME default getDate() NOT NULL
)
這不能滿足「行插入的當前日期/時間」。它會更新該行被修改的日期,如文檔[這裏](http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00170.1540/doc/html/san1288042837002 .html):「只要更新行,值就會隨當前日期和時間更新。」 – 2014-05-09 18:52:00
值得注意的是(與Sql Server不同)列規範各部分的順序很重要:「date_data DATETIME default getDate()NOT NULL」是有效的;而「date_data DATETIME NOT NULL默認getDate()」不是。 – Badgerspot 2014-12-12 10:14:33
... DEFAULT GETDATE()
是正確的。案件無關緊要;混合大小寫可能表示Java方法,但它是一個直接的TSQL函數。如果您需要進一步的幫助,請發佈確切的錯誤消息。
此外,ALTER TABLE方法設置默認爲未來 INSERTS;如果你想改變現有的數據,你需要更新(適用於小型表格)或卸載/重新加載表格(大型需求)。
注意NULL/NOT NULL:你不想在沒有理解的情況下改變它。再次,現有的/未來的問題需要解決。 NOT NULL防止NULL作爲INSERT VALUE顯式傳遞。
但是,如何讓它不像更新「當前」關鍵字那樣更新更新日期呢? – 2014-05-09 18:55:11
CURRENT_DATE是未被普遍採用的SQL標準。 正如別處所述,應該使用getdate()T-SQL函數。
它說默認情況下我需要一個常量,常量表達式或變量。 – jonjonjonjuice 2010-10-06 16:53:48
這是令人驚訝的,我很確定我用它(用於表定義),就像這裏寫的http://vista.intersystems.com/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_getdate除非你是不使用Sybase ASE? – 2010-10-06 20:23:52