更新SQL以仅在日期时间更改时间

时间:2018-07-12 07:59:55

标签: mysql sql datetime sql-update

我只想使用UPDATEdatetime sql的时间,但这似乎行不通。更新将来自用户,并且仅更改时间。 示例2018-10-06 08:00:00 update to 2018-10-06 12:00:00(用户输入的时间)

$sql3="UPDATE course 
           SET date_start = '$date_start' 
           WHERE date_start = SUBSTRING(date_start,11,17)
           AND CourseNo = '$id1' ";
    $hasil3=mysql_query($sql3);

    if($hasil3==false)
        echo "SQL error:".mysql_error();
    else
    {
        ?>  <center>
    <script language="javascript"> 
            alert("Successfully update!");window.location="studentTimetable.php";
    </script>

3 个答案:

答案 0 :(得分:0)

您可以使用以下表达式:

select date('2018-10-06 08:00:00') + interval 12 hour

如果要增加小时/分钟/秒,也可以使用addtime()

如果您要这么做的话,可以简单地放入update语句中。

答案 1 :(得分:0)

如果我理解的正确,您将获得格式为<hours> ":" <minutes> ":" <seconds>的字符串输入,表示一天中的某个时间。您想用给定的一天中的时间替换datetime列中的一天中的时间。

为此,您可以先将该列向下转换为date,然后再次将其向上转换为datetime。这样,一天中的时间部分将变为00:00:00。现在使用date_add添加用户给您的一天中的时间。由于一天中的时间在此之前归零,因此用户输入的时间将是datetime

UPDATE elbat
       SET nmuloc = date_add(cast(cast(nmuloc AS date) AS datetime), INTERVAL '12:00:00' HOUR_SECOND);

答案 2 :(得分:0)

我对此有类似的问题。

我有几个日期不太正确,但几秒钟之后。它们都应在一个小时(即00:00)结束

  1. 计算出我需要增加多少时间(我知道我想增加几秒钟)
SELECT 60 - DATEPART(SECOND, EndDate), e.*
FROM   Events e 
WHERE  DatePart(SECOND, EndDate) <> 0
  1. 现在我可以编写一个更新来更正所有稍有偏离的日期。
UPDATE Events 
SET EndDate = DATEADD(SECOND, i.Seconds, i.EndDate)  
FROM (
    SELECT Id, 60 - DATEPART(SECOND, EndDate) AS Seconds, EndDate
    FROM Events e 
    WHERE  DatePart(SECOND, EndDate) <> 0
) i
WHERE 
    i.ID = Events.ID