【问题标题】:Error when trying to insert date into datetime (php & SQL Server stored procedure)尝试将日期插入日期时间时出错(php 和 SQL Server 存储过程)
【发布时间】:2011-03-23 13:25:36
【问题描述】:

我有同样的问题,但有点不同from Neil problems (Error when trying to insert date into datetime column),

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

我的问题是,如果我有这样的日期字符串:

$date = '2011-03-29'; 

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

 insert into tbl(date) 
 values($date)

有人可以帮忙吗?谢谢

仅供参考,我有

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 中),然后转换为日期时间(在存储过程中),但出现了一些错误。

我真的被困住了.. 对这个问题有什么想法吗?

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

【问题讨论】:

    标签: php sql-server datetime stored-procedures


    【解决方案1】:

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

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

    然后按照您的意愿处理其余部分。这适用于mysql,也许sql-server也需要这样。

    【讨论】:

      【解决方案2】:

      我得到了朋友的回答,

      只要放 mssql_bind($query, "@date", &$date, SQLCHAR); //日期时间不是 sqlint4,而是 sqlchar 或 sqlvarchar

      非常感谢 Groovetrain,我也可以 $日期='2011-03-29 00:00:00' 然后放

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 2015-03-17
        • 2011-09-06
        • 2014-08-20
        • 1970-01-01
        相关资源
        最近更新 更多