尝试将日期插入datetime列时出错

时间:2009-10-28 15:51:36

标签: php sql sql-server sql-server-2008

我有一个表单试图将一些数据插入SQL Server 2008数据库。表单有一个函数来获取当前日期/时间,然后将其插入数据库,如下所示;

$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)";

但是,当表单提交时,它会报告错误;

警告:mssql_query()[function.mssql-query]:message:无法将值NULL插入到'created'列中,表'dbo.users';列不允许空值。 INSERT失败。

我们已经做了一个echo $ q来显示试图插入的数据,它确实显示了正确的日期时间(例如2009-10-28 15:43:00.000),.000通常会被db添加。< / p>

如果我在数据库中手动创建记录,则接受上述示例中的日期时间。

想知道以前是否有人遇到过这个问题?

谢谢。 尼尔

4 个答案:

答案 0 :(得分:1)

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)";

更新

哦,它的sql server

可能你会使用CURRENT_TIMESTAMP然后

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

你可以看到current_timestamp给出了时间和时间。

答案 1 :(得分:1)

尝试使用CURRENT_TIMESTAMP代替'$ now',如下所示:

$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)";

答案 2 :(得分:1)

我遇到了同样的问题,这个解决方案可能会有所帮助:检查您是否有yyyy-DD-mm日期格式(不是yyyy-mm-DD),因为默认情况下,mssql接受yyyy-DD-mm中的日期格式。

答案 3 :(得分:0)

MSSQL Server具有当前日期时间的GETDATE()函数,因此请尝试:

$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)";