LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11807|回复: 10

mysql如何获取系统时间?

[复制链接]
发表于 2004-4-9 18:47:09 | 显示全部楼层 |阅读模式
我用phpMyAdmin做了一个留言板的数据库.
字段=TIME
类型=DATETIME
输入数据后发现它不能自己记录输入的时间.也就是系统的时间.
显示为0000-00-00 00:00:00
为什么???但我在数据库里直接输入就可以有系统的时间~``晕。。。网页上就不行。。~~怪

access有一个Now()的函数可以自动获取系统时间,Mysql有类似的函数吗?
我是初学者请指教~~``谢了~~~`
发表于 2004-4-9 23:29:25 | 显示全部楼层
,使用 DATETIME 列,当新建记录行时以 NOW() 初始化该列,以后在对该记录行进行更新时不再处理它
 楼主| 发表于 2004-4-10 00:13:08 | 显示全部楼层
能说详细点吗?我对Mysql不是很懂,最好把每一步的命令贴出来!
发表于 2004-4-10 00:26:45 | 显示全部楼层
INSERT INTO table (LOGINTIME) VALUES (NOW());
 楼主| 发表于 2004-4-10 23:55:26 | 显示全部楼层
我做了个简单的测试,数据库中只包含一个data表,有以下字段(见图)。
欲实现的功能是:在页面表单中将用户输入的数据插入Name字段,ID字段为自动编号,Time为当前时间,全部代码如下:
<?php require_once('Connections/test.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO data (name) VALUES (%s)",
                       GetSQLValueString($_POST['textfield'], "text"));

  mysql_select_db($database_test, $test);
  $Result1 = mysql_query($insertSQL, $test) or die(mysql_error());
}

mysql_select_db($database_test, $test);
$query_conn = "SELECT * FROM `data`";
$conn = mysql_query($query_conn, $test) or die(mysql_error());
$row_conn = mysql_fetch_assoc($conn);
$totalRows_conn = mysql_num_rows($conn);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>

<body>
<form name="form1" method="OST" action="<?php echo $editFormAction; ?>">
  <p>
    <input type="text" name="textfield">
</p>
  <p>
    <input type="submit" name="Submit" value="提交">
    <input type="reset" name="Submit" value="重置">
  </p>
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>
<?php
mysql_free_result($conn);
?>


但提交后查看数据库中Time的值还是为0000000……
但是如果将

  $insertSQL = sprintf("INSERT INTO data (name) VALUES (%s)",
                       GetSQLValueString($_POST['textfield'], "text"));
改为

  $insertSQL = sprintf("INSERT INTO data (name,time) VALUES (%s,now())",
                       GetSQLValueString($_POST['textfield'], "text"));
即可获得当前系统时间。

我是开始学PHP和Mysql的,用过Asp+Access,在Access中有个Now()函数,插入一条记录后可以自动获取当前时间,而不需要在代码中进行定义,我想知道Mysql有没有类型的功能?
以上代码由DW生成,可能结构有些乱。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2004-4-11 01:58:36 | 显示全部楼层
字段用timestamp类型,默认值就是now()
 楼主| 发表于 2004-4-11 08:54:39 | 显示全部楼层
字段如果用timestamp类型,生成的时间格式为:20040411085350,这样看起来没有用datetime生成的格式直观
发表于 2004-4-11 17:26:26 | 显示全部楼层
timestamp的格式是差一点,不过它本来就是用来干这个的,还是用它比较好。
你insert的时候它就会获得now(),update的时候它也会更新为now(),这个类型专门就是为了log之类的记录准备的,还是比较好用,格式问题你可以自己处理一下。
 楼主| 发表于 2004-4-11 20:21:25 | 显示全部楼层
看来只要在代码中进行格式转换了!
发表于 2004-4-20 13:13:51 | 显示全部楼层
sysdate
current_date
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表