2010-12-20 32 views
57

在VB.net代碼中,我使用SQL參數創建請求。它將DateTime參數設置爲值DateTime.Now,我的請求將是什麼樣子?將DateTime數據庫字段設置爲「Now」

UPDATE table SET date = "2010/12/20 10:25:00"; 

UPDATE table SET date = GETDATE(); 

在我敢肯定,每個記錄將被設置爲確切的同時尚屬首例。在第二種情況下,它取決於DBMS如何處理請求。這引出了第二個問題:在用NOW()更新大型表時,SQL Server是否設置了相同的日期和時間?

編輯:通過GETDATE()替換NOW()(它不存在於SQL Server中)。

回答

111

在SQL你需要使用GETDATE()

UPDATE table SET date = GETDATE(); 

沒有NOW()功能。


要回答你的問題:

在一張大桌子,因爲該功能對每行評估,你最終會爲更新的領域得到不同的值。

所以,如果您的要求是將其全部設置爲相同的日期,我會做這樣的事情(未經測試):

DECLARE @currDate DATETIME; 
SET @currDate = GETDATE(); 

UPDATE table SET date = @currDate; 
+0

糟糕是NOW()是Mysql,對不起。但問題依然存在。 – 2010-12-20 09:38:42

+0

@Thibault Witzig - 我在我的更新中回答了它:) – Oded 2010-12-20 09:39:41

+0

好的謝謝。所以我需要確保把我的請求中的實際日期(來自代碼)dans not GETDATE()你知道它將SQLparameter設置爲DateTime.Now將執行此操作或如果我應該首先將日期轉換爲字符串,然後將它添加到請求中? – 2010-12-20 09:41:49

6

使用GETDATE()

返回當前數據庫系統 時間戳作爲日期時間值,而不是 數據庫時區偏移量。此值 值來源於運行SQL Server實例的計算機的運行 系統。

UPDATE table SET date = GETDATE() 
16

的替代方法GETDATE()是CURRENT_TIMESTAMP。完全一樣的東西。

+2

'CURRENT_TIMESTAMP'實際上是SQL標準,所以有些人可能會認爲這是首選語法。 – 2017-09-08 17:09:16

相關問題