Php 我可以使用substr()在我的网站上显示用getdate()更新的列中的值吗?

Php 我可以使用substr()在我的网站上显示用getdate()更新的列中的值吗?,php,Php,基本上它是有效的,但我不确定这样使用是否好。 让我解释一下。我有一个存储过程(我使用的是MSSQL Server 2005),它用GetDate()更新我表中的一列,例如结果是:2014-10-11 22:57:48.550,所以当我在我的网站上显示该列时,它会以毫秒显示,但是我想删除它们。我是否可以使用substr()仅显示前几个字符,这样我就可以删除最后的.milistess。。我对它进行了测试,它确实有效,但不确定它是否有用。。请让我知道。这是我下面的全部功能,我使用substr()在我的

基本上它是有效的,但我不确定这样使用是否好。 让我解释一下。我有一个存储过程(我使用的是MSSQL Server 2005),它用
GetDate()
更新我表中的一列,例如结果是:
2014-10-11 22:57:48.550
,所以当我在我的网站上显示该列时,它会以毫秒显示,但是我想删除它们。我是否可以使用
substr()
仅显示前几个字符,这样我就可以删除最后的
.milistess
。。我对它进行了测试,它确实有效,但不确定它是否有用。。请让我知道。这是我下面的全部功能,我使用
substr()
在我的网站上显示时间

   function ShowLLogins()
    {
        $db = $this->database[GGD];
        $num_rows = $db->doQuery('SELECT TOP 20 IPAddress, LTIME FROM Log WHERE UserName = ? ORDER BY LTIME DESC', $_SESSION['UserName']);

        if ($num_rows == -1)
        {
            return;
        }
        elseif ($num_rows == 0)
        {
            $this->content = Template::Load('llogins', array('show_llogins' => NULL, 'no_logins' => Template::GetLangVar('NO_LOGINS')));
            return;
        }

        $content = '';
        $flag = 1;
        while ($row = $db->doRead())
        {
            $content .= Template::Load('llogins-' . $flag++, 
                array
                (
                    'ip' => $row['IPAddress'],
                    'time' => substr($row['LTIME'], 0, 19)

// time returns value without the .miliseconds //
// example: 2014-10-11 22:57:48 instead 2014-10-11 22:57:48.550 //
                )
            );
            if ($flag > 2) $flag = 1;
        }

        $this->content = Template::Load('llogins', array('show_llogins' => $content, 'no_logins' => NULL));
    }

你是否考虑过使用MySQL < /P>

SELECT TOP 20 IPAddress, DATE_FORMAT(LTIME,'%Y-%M-%D %T') AS LTIME FROM Log WHERE UserName = ? ORDER BY LTIME DESC

我不会使用
substr()
good practice来切割时间字符串。您可以,而且可能应该在数据库端这样做。在T-SQL中,应该是这样的:

SELECT CONVERT(varchar, LTIME, 101)
使用上述代码
101
将日期格式化为
mm/dd/yyyy


如果有效,就让它保持现在的样子吧!是的,但我不确定这是否是个好方法。这就是我的意思。如果substr有效,那就去做吧。与解析为日期然后重新格式化输出相比,它的重量很低。非常感谢。如果是那样的话,我会接受的。非常感谢。@Monk25我的回答对你有帮助吗?我正在使用MSSQL Server 2005,正如我在主要帖子中所说的,这对我没有帮助。还是谢谢你的建议。这会有帮助吗?我明白,但是,我只能在php脚本中显示它。这不是一个好的实践,但也不是不正确的,对吗?@Monk25它显然是有效的,但您是否更愿意使用PHP日期函数来格式化日期时间?我所说的不是它是否有效,而是它是否是可理解的逻辑代码。如果使用日期函数而不是字符串函数,程序员会更清楚地知道,您希望重新格式化日期。但有时可能我太挑剔了。你完全正确,但我的字符串与表中的字符串类似:
2014-10-11 22:57:48.550
,因此我应该在数组中格式化字符串,在数组中显示字符串时不使用
.miliskes
。当我的脚本选择LTIME来显示它时,由于某种原因转换将无法在我的脚本上工作。@Monk25列的类型是什么
LTIME
?@Monk25如果是日期时间,那么它应该可以工作,如果是字符串,那么你可以这样转换:
选择转换(varchar,cast(LTIME as datetime),101)