更新sql以仅在datetime中更改时间

kknvjkwl  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(360)

我想 UPDATE 时间只从 datetime 使用 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>
q8l4jmvw

q8l4jmvw1#

可以使用以下表达式:

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

你也可以使用 addtime() 如果要添加小时/分钟/秒。
这应该很简单,可以放到一个 update 如果那是你想做的话。

eit6fx6z

eit6fx6z2#

如果我没听错的话,你会得到一个字符串格式的输入 <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);
pbossiut

pbossiut3#

我也有类似的问题。。
我有很多约会,几秒钟后就不太对劲了。他们都应该在一小时内结束,即00:00
算出我需要加多少时间(我知道我想加几秒钟)

SELECT 60 - DATEPART(SECOND, EndDate), e.*
FROM   Events e 
WHERE  DatePart(SECOND, EndDate) <> 0

现在我可以写一个更新来更正所有稍微偏离的日期。

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

相关问题