DateTime veritabanı alanını "Şimdi" olarak ayarlayın


100

VB.net kodunda SQL parametreleri ile istek oluşturuyorum. DateTime parametresini DateTime.Now değerine ayarlarsam, isteğim nasıl görünecek?

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

veya

UPDATE table SET date = GETDATE();

İlk durumda, her kaydın aynı zamana ayarlanacağından eminim. İkinci durumda, DBMS'nin isteği nasıl işlediğine bağlıdır. Bu da beni ikinci soruya götürüyor: SQL Server, NOW () ile büyük bir tabloyu güncellerken aynı tarih ve saati ayarlıyor mu?

DÜZENLEME: NOW () (SQL Server'da mevcut olmayan) GETDATE () ile değiştirildi.

Yanıtlar:


181

SQL'de şunları kullanmanız gerekir GETDATE():

UPDATE table SET date = GETDATE();

NOW()İşlevi yok .


Soruna cevap vermek için:

Büyük bir tabloda, işlev her satır için değerlendirildiğinden, güncellenen alan için farklı değerler elde edeceksiniz.

Dolayısıyla, gereksiniminiz hepsini aynı tarihe ayarlamaksa, şöyle bir şey yapacağım (denenmemiş):

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

UPDATE table SET date = @currDate;

Oops evet ŞİMDİ () Mysql, üzgünüm. Ancak sorular kalır.
Thibault Witzig

Tamam teşekkürler. Bu yüzden, isteğime gerçek tarihi (koddan) koyduğumdan emin olmam gerekiyor. isteğe eklensin mi?
Thibault Witzig

@@ Thibault Witzig - Yapabilirsin. Veya gönderdiğim SQL'i kullanabilirsiniz (geçerli tarihi bir değişkene alın ve değişkeni tablodaki tarihi ayarlamak için kullanın - değişkendeki değer değişmeyecektir).
Oded

Tüm kayıtlar için aynı zamanı korumak istiyorsanız, Parametreli SQL'i kullanarak Şimdi girin. Bu şekilde, dize ayrıştırma veya yerelleştirilmiş veri dizesi biçimlendirme sorunları hakkında endişelenmenize gerek kalmaz.
Jim Wooley

20

GETDATE () için bir alternatif CURRENT_TIMESTAMP'tir. Aynı şeyi yapıyor.


7
CURRENT_TIMESTAMPgerçekte SQL Standardıdır, bu nedenle bazıları bunun tercih edilen sözdizimi olduğunu iddia edebilir.
Tony L.

Bu oldukça yanlış. Sadece bu ikisi hakkındaki dokümanları okudum ve bana bunların "tamamen aynı şey" olmadığı aşikar geliyor. Bu soru, bunun için daha ayrıntılı bir açıklama sunar: stackoverflow.com/questions/7105093/…
Mladen B.

7

GETDATE () kullanın

Geçerli veritabanı sistemi zaman damgasını, veritabanı saat dilimi farkı olmadan bir tarih saat değeri olarak döndürür. Bu değer, SQL Server örneğinin çalıştığı bilgisayarın işletim sisteminden türetilir.

UPDATE table SET date = GETDATE()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.