Datetime sütuna tarihini eklemek için çalışırken hata

4 Cevap php

Bir SQL Server 2008 veritabanına bazı verileri eklemek için çalışan bir form var. Form geçerli tarih / zaman almak ve aşağıdaki gibi veritabanına eklemek için bir işlevi vardır;

$now = date("Y-m-d H:i:s");
$q = "INSERT INTO ".TBL_USERS." ( username, password, userid, userlevel, email, created, updated, timestamp, fullname, avatar )
VALUES ( '$username', '$password', '0', $ulevel, '$email', '$now', '$now', $time, '$fullname', $avatar)";

Form gönderdiğinde Ancak, bunun bir hata raporları;

Uyarı: mssql_query () [function.mssql-sorgu]: iletisi: sütununda 'yarattı' tablo 'dbo.users' içine NULL değeri takamıyorum; sütun boş değerlere izin vermez. INSERT başarısız olur.

Biz eklenecek çalışırken verileri göstermek için bir yankı $ q yapmış ve doğru başlangıç ​​tarihi (örn. 2009-10-28 15:43:00.000) göstermektedir, normalde .000 db tarafından eklendi alır.

Ben elle veritabanında bir kayıt oluşturmak varsa, yukarıdaki örnekte datetime kabul edilir.

Herkes önce bu soruna rastlamak olsaydı merak ettiniz mi?

Thank you. Neil

4 Cevap

Yerine şöyle 'şimdi $' arasında current_timestamp deneyin:

$q = "INSERT INTO ".TBL_USERS." ( username, password, userid, userlevel, email, created, updated,   timestamp, fullname, avatar )
VALUES ( '$username', '$password', '0', $ulevel, '$email', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, $time, '$fullname', $avatar)";
Try NOW() if you are trying to add current timestamp.

    $q = "INSERT INTO ".TBL_USERS." ( username, password, userid, userlevel, 
email, created, updated, timestamp, fullname, avatar )
    VALUES ( '$username', '$password', '0', $ulevel, 
'$email', NOW(), NOW(), $time, '$fullname', $avatar)";

GÜNCELLEME

vay onun sql server

muhtemelen o current_timestamp kullanmak istiyorum

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();
/* Returned:
SYSDATETIME()      2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME()   2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP  2007-04-30 13:10:02.047
GETDATE()          2007-04-30 13:10:02.047
GETUTCDATE()       2007-04-30 20:10:02.047

O current_timestamp alongwith zaman tarih geri verir görebilirsiniz.

Ben aynı sorun, olası bu çözüm yararlı olacaktır vardı: Bir yyyy-DD-mm tarih formatı var kontrol (değil yyyy-mm-DD), varsayılan olarak, {[(0 tarihini kabul MSSQL çünkü )]} biçimi.

MSSQL Server mevcut tarih için GETDATE () işlevi vardır, bu nedenle deneyin:

$q = "INSERT INTO ".TBL_USERS." ( username, password, userid, userlevel, email, created, updated, timestamp, fullname, avatar )
VALUES ( '$username', '$password', '0', $ulevel, '$email', GETDATE(), GETDATE(), $time, '$fullname', $avatar)";