CURDATE()不适用于MSSQL我可以在替换中使用什么

时间:2014-11-25 21:49:21

标签: php mysql sql-server pdo

我有一个简单的问题我正在使用PDO和MSSQL之前我有过CURDATE(),但由于MSSQL不支持,因此无效。只有MySQL,我添加了GETDATE(),但这也不起作用。我怎样才能获得当前日期。我希望信息按ID和今天的日期显示名字顺序。

$stmt = $db->prepare("SELECT * FROM students WHERE name='Firstname' And Getdate() ORDER BY id DESC");
$stmt->execute()

更新抱歉这就是我的意思

 $stmt = $db->prepare("SELECT * FROM students WHERE name='BOB' And Getdate() ORDER BY id DESC");
    $stmt->execute()

整个查询页面。               

    <head>

    <title></title>
    </head>
    <body>
    <?php
    //connects to the database
    require_once("../../db_connect.php");

    //prepared statement with PDO to query the database
    $stmt = $db->prepare("SELECT * FROM requests WHERE name='Bob' AND Date = CAST(GETDATE() AS DATE) ORDER BY id DESC");
    $stmt->execute();

    ?>

    <?php //start of the while loop ?>
    <?php while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) { ?>

 <table border="1">

    <br>
    <tr> 
        <th style="width:25px; height: 25px;">ID</th>
        <th style="width:90px; height: 25px;">Name</th>
        <th style="width:40px; height: 25px;">Date</th>

    </tr>
    <tr style="width:25px">
    <?php $id = $row['id'];?>
    <?php echo  "<td> <a href='../../update.php?id=$id'>$id</a></td>"?>
        <td style="width:90px; height: 12px;"><?php echo $row['name']; ?></td>
        <td style="width:40px; height: 12px;"><?php echo $row['date']; ?></td>

    </tr>

    </table>

      <?php } //end of the while loop?>
    </body>

</html>

这里的页面是用户更新信息

<?php
    include('db_connect.php');
    $id=$_GET['id'];
    $result = $db->prepare("SELECT * FROM students WHERE id= :id");
    $result->bindParam(':id', $id);
    $result->execute();
    for($i=0; $row = $result->fetch(); $i++){
?>

<html>
<head>
<title></title>


</head>
<body class='body'>
<form action = "update_process.php"  method ="post" class="Form">

<p><input type ="hidden" name = "id" value="<?php print($id); ?>"</p>

<table border='1' align="center">
<tr>    
    <td>Name:</td>
<td><input type="text" value ="<?php  print($row['name']) ?>"name="name"></td>
</tr>

<tr>    
    <td>Date</td>
<td style="width: 303px">
<input type="text" value ="<?php echo date("Y-m-d",time())?>"name="date" style="width: 148px"></td>


</tr>

</table>

<input type="submit" value= "Update Information">
<br>
</div>
</form>


</body>
</html>
<?php
    }
?>

1 个答案:

答案 0 :(得分:1)

SQL Server中没有与MySQL匹配CURDATE()的等效函数,但您可以通过将GETDATE()转换为DATE日期类型(对时间组件进行条带化)来模仿它:

CAST(GETDATE() AS DATE)

但是,您的SQL语句仍然没有意义,我怀疑您的意思是将日期与表中的列进行比较,如下所示:

SELECT * 
FROM students 
WHERE name='Firstname' 
AND SomeDateColumn = CAST(GETDATE() AS DATE)
ORDER BY id DESC