2010-12-20 20 views
57

VB.net kodunda SQL parametreleriyle istek oluşturuyorum. DateTime.Now değerine bir DateTime parametresi ayarladım, isteğim nasıl görünecek?DateTime veritabanı alanını "Now" olarak ayarlayın

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

ya da ben her rekor aynı zamanda ayarlanacak eminim İlk durumda

UPDATE table SET date = GETDATE(); 

. İkinci durumda, DBMS'nin talebi nasıl işlediğine bağlıdır. Bu, ikinci soruya yönlendirir: SQL Server, NOW() ile büyük bir tabloyu güncelleştirirken aynı tarih ve saati ayarlar mı? GETDATE() tarafından NOW() (SQL Server'da bulunmayan) yerine .. SQL

cevap

111

Eğer GETDATE() kullanmak gerekir:

UPDATE table SET date = GETDATE(); 

hiçbir NOW() işlevi yoktur. Fonksiyon her satır için değerlendirilir beri, büyük bir tabloda

güncellenen alan için farklı değerler alma sona erecek:


sorunuzu cevaplamak için. İhtiyaçlarınız aynı tarihte bunu bütün ayarlamak ise

Yani, (denenmemiş) böyle bir şey yapacağını:

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

UPDATE table SET date = @currDate; 
+0

Oops yes NOW() Mysql, üzgünüm. Ama sorular hala var. –

+0

@Thibault Witzig - Güncellememde cevap verdim :) – Oded

+0

Ok teşekkürler. Bu yüzden benim isteğimdeki gerçek tarihi (koddan) koymamalısınız. GETDATE() DateTime'a SQLparametre ayarını biliyor musunuz? Bunu yapacağız ya da ilk önce tarihi bir dizeye çevirmeliyim ve sonra isteği üzerine ekleyin? –

6

Kullanım GETDATE()

geçerli veritabanı sistemi zaman damgası döndürür veritabanı zaman dilimi ofseti olmadan bir datetime değeri olarak. Bu değeri, SQL Server'ın örneğinin çalıştığı bilgisayarın işletim sisteminden türetilmiştir.

UPDATE table SET date = GETDATE() 
16

bir alternatif getDate() için CURRENT_TIMESTAMP olup. Aynen öyle mi?

+2

'CURRENT_TIMESTAMP', gerçekte SQL Standardıdır, bu nedenle bazıları bu tercih edilen sözdizimi olduğundan emin olabilir. –

İlgili konular