0

需要获取信息,EndDate 是否过期(EndDate 是行,其中键入了有关购买用户保费日期的信息)

connectuser2db();
$bile_sql = "SELECT EndDate FROM tbl_rfuser WHERE Serial = '" . $userdata['serial'] . "'";
if (!($bile_result = mssql_query($bile_sql))) {
    echo "Unable to select query the Billing table";
    exit;
 }

$bilel = mssql_fetch_array($bile_result);          
$userdata['Enddate'] = $bilel['EndDate'];
$t_logd = $bilel['EndDate'];

echo $t_logd;

结果如 Jul 14 2020 02:36:00:000PM(如果 EndDate 为 smalldatetime 数据类型)

$time = date("Y-m-d H:i:s");

echo $time;

结果如 2020-07-15 14:51:21

如果我在这一行中使用 $time,它会将 enddate 更新为当前时间:

$t_login = $userdata["lastlogintime"]; // last user login in game (from mssql) Jul 15 2020 02:36:00:000PM
$t_logd = $bilel['EndDate']; // Premium EndDate (from mssql) Jul 14 2020 02:36:00:000PM
$time = date("Y-m-d H:i:s"); // current time (from php) like 2020-07-15 14:51:21
 if( $t_logd <= $t_login ) 
 { connectuser2db();
$user_update = "UPDATE tbl_rfuser SET EndDate='" . $time . "' WHERE Serial= '" . $userdata["serial"] . "'";
 mssql_query($user_update); }

它成功地比较了“lastlogin”和“enddate”,如果帐户是新帐户或用户在 EndDate 过期之前上次在线 - 将 EndDate 更改为当前时间,则成功从 $time 开始。但是如果用户在 EndDate 之后登录,它就不起作用

想要这个比较:

if( $t_logd <= $t_login ) //working now

更改为比较:

if( $t_logd <= $time ) // not working now

请帮助我如何从 mssql 获取当前时间或更改 $time 可以比较的东西?尝试了strtotime,但做不到(sql server以毫秒为单位检查,但我的php老了,不能使用日期(“Ymd H:i:s:v”)格式)

4

2 回答 2

0

只需使用GETDATE

UPDATE tbl_rfuser SET EndDate=GETDATE() WHERE Serial= ...
于 2020-07-15T13:30:36.273 回答
0

请注意,MSSQL PHP 扩展在 PHP 5.3 的 Windows 上不再可用,并在 PHP 7.0.0 中删除,但如果您想要解决方案,您可以尝试以下方法:

  • 通过将文件中的mssql.datetimeconvert选项设置为 来指定如何从 SQL Server 返回日期时间值。当此选项为日期时间值时,将转换为 SQL 服务器设置。如果此选项是日期时间值,则以格式返回。php.iniOffOnOffYYYY-MM-DD hh:mm:ss
  • 用于date_create()创建和比较日期作为 PHP 日期时间对象。

下一个简化示例演示了这种方法(使用 PHP 5.2.9 测试):

<?php
// Connection
$server   = 'server,port';
$username = 'username';
$password = 'password';
$database = 'database';
$conn = mssql_connect($server, $username, $password);
if (!$conn) {
    echo "Error (sqlsrv_connect): ".mssql_get_last_message();
    exit;
}
mssql_select_db($database, $conn);

// Statement
$sql = "SELECT DATEADD(day, -1, GETDATE()) AS [DateTime]";
$stmt = mssql_query($sql, $conn);
if (!$stmt) {
    echo "Error (sqlsrv_query): ".mssql_get_last_message();
    exit;
}

// Results
while ($row = mssql_fetch_assoc($stmt)) {
    $datetime1 = date_create($row['DateTime']);
}
$datetime2 = date_create();

// Compare dates
echo ($datetime1 <= $datetime2) ? 'Result: <=' : 'Result: >';

// End
mssql_free_result($stmt);
mssql_close($conn);
?>
于 2020-07-15T14:11:55.557 回答