我遇到了同样的问题,但有点不同from Neil problems(Error when trying to insert date into datetime column),
Neil想要获得现在的日期时间,以便他可以使用CURRENT_TIMESTAMP
或GETDATE()
。
我的问题是,如果我有一串日期,如:
$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
列。对不起,因为我不能流利地说英语
答案 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日期字符串的长度