尝试将日期插入datetime时出错(php& SQL Server存储过程)

时间:2011-03-23 13:25:36

标签: php sql-server datetime stored-procedures

我遇到了同样的问题,但有点不同from Neil problemsError when trying to insert date into datetime column),

Neil想要获得现在的日期时间,以便他可以使用CURRENT_TIMESTAMPGETDATE()

我的问题是,如果我有一串日期,如:

$date = '2011-03-29'; 

然后我想使用PHP存储过程插入SQL Server数据库。

 insert into tbl(date) 
 values($date)

有人可以帮忙吗?感谢

只是fyi,我有

SQL Server表:

CREATE TABLE tbl
(
    date datetime
)

存储过程:

create procedure sp_insertdate
    (@date datetime)
as
begin
    insert into tbl(date) values(@date)
end

PHP代码:

<?php

  $date = '2011-03-29';  

  include("con.php");  
  $query  = mssql_init("sp_insertdate");
  mssql_bind($query, "@date", &$date, SQLINT4); //sqlint4 for datetime

  mssql_execute($query);

?>

结果是1900-1-1,

我尝试先发送varchar(在php中)然后转换为datetime(在存储过程中),但是有一些错误。

真的我卡住了......对这个问题有任何想法吗?

我只想使用PHP中的存储过程将字符串2011-03-29插入SQL Server datetime列。对不起,因为我不能流利地说英语

2 个答案:

答案 0 :(得分:4)

每当我遇到这样的问题(使用mysql)时,我只需要将时间(午夜)添加到日期,以便它可以将其识别为它所期望的datetime。试试这个:

$date = '2011-03-29';
$date .= ' 00:00:00';

然后像往常一样处理剩下的事情。这适用于mysql,也许sql-server也需要这样。

答案 1 :(得分:0)

我得到了朋友的回答,

刚刚放好 mssql_bind($ query,“@ date”,&amp; $ date,SQLCHAR); //对于datetime不是sqlint4,而只是sqlchar或sqlvarchar

然而,非常感谢Groovetrain,我也可以 $ date ='2011-03-29 00:00:00' 然后把

mssql_bind($ query,“@ date”,&amp; $ date,SQLCHAR,false,false,19); // 19日期字符串的长度