【问题标题】:UPDATE sql to change time only in datetime更新 sql 以仅在日期时间中更改时间
【发布时间】:2018-07-12 07:59:54
【问题描述】:

我只想从datetime 使用sql UPDATE 时间,但它似乎无法正常工作。更新将从用户那里获得,并且只会更改时间。 例如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>

【问题讨论】:

  • 你的 DMBS、sql server 或 mysql 或 plsql 是什么,你有没有尝试过使用dateadd
  • 所以你想增加 4 小时?到所有行?
  • 添加一些示例表数据和预期结果 - 作为格式化文本,而不是图像。并向我们​​展示您当前的查询尝试。
  • 您可以在这里找到解决方案:w3schools.com/sql/func_mysql_date_add.asp
  • 我正在使用 mysql。尚未尝试使用 dateadd,因为我不知道如何使用。数据应根据用户提示进行更改。

标签: mysql sql datetime sql-update


【解决方案1】:

您可以使用如下表达式:

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

如果您想添加小时/分钟/秒,也可以使用addtime()

这应该足够简单,可以放入 update 语句,如果这是您想要做的。

【讨论】:

    【解决方案2】:

    如果我理解正确,您会得到一个格式为&lt;hours&gt; ":" &lt;minutes&gt; ":" &lt;seconds&gt; 的字符串输入,它代表一天中的某个时间。您想将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);
    

    【讨论】:

      【解决方案3】:

      我也遇到了类似的问题。。

      我有一些日期相差几秒钟。它们都应该在一个小时结束,即 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多