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