更新日期时间最后8个字符(... -..- .. hh:mm:ss)

我有datetime列,格式为YYYY-MM-DD HH:mm:ss。</ p>

但是在我用于更新此数据的php表单中,我创建了2个单独的字段,一个用于DATEpart,另一个用于TIMEpart。 </ p>

使用以下方法从表中接收/加载这些值到我的php表单没有问题:</ p>

  RIGHT(datetime,8)for  TIMEpart或DATEpart LEFT(datetime,10)
</ code> </ pre>

问题是我也无法仅更新那部分数据。 如果我尝试使用TIMEpart进行更新,它将尝试更新datetime的前8个字符,而不是尝试更新最后8个字符。 问题是我不知道如何告诉程序这样做,我知道它需要被定义到我的sql查询中。 </ p>

  $ query3 = mysqli_query($ db,“update LISTS set datetime = LEFT(datetime,10),
datetime = RIGHT(datetime,8)where id ='$ id '“);
</ code> </ pre>

我是SQL和PHP的新手。 我已经通过2个单独的列工作了,但我想尽可能简化sql表。 </ p>

提前致谢。</ p>
</ div>

展开原文

原文

I have datetime column which is in this format YYYY-MM-DD HH:mm:ss.

But in my php form for updating this data I have created 2 separate fields one is for DATEpart and one is for TIMEpart.

There is no problem to receive/load these values into my php form from table using:

RIGHT(datetime,8) for TIMEpart or for DATEpart LEFT(datetime,10)

Problem is I am not able to update also only that part of data. If I am attempting to update with TIMEpart it will try to update first 8 characters of datetime instead of attempting to update last 8 character. Problem is I do not know how to tell the program to do so, I know that it needs to be defined into my sql query.

$query3=mysqli_query($db,"update LISTS set datetime=LEFT(datetime,10), 
datetime=RIGHT(datetime,8) where id='$id'");

I am new into SQL and PHP. I have this already working by having 2 separate columns but I would like to simplify sql table if possible.

Thanks in advance.

dongqian9567
dongqian9567 日期时间表中没有格式,或者您是说将它们存储为字符串?你不应该。日期时间的适当类型是DATETIME(或TIMESTAMP)。要获取日期时间的日期部分,您将使用DATE函数,对于时间部分,您将使用TIME函数而不是某些字符串函数。如果您想分别处理日期和时间,为什么不单独存储它们?这将是DATE类型的列和TIME类型的另一列,并且读取和更新将是直截了当的。
3 年多之前 回复
dongxing1965
dongxing1965 为什么你只需要更新时间或日期?这就是为什么通常使用日期时间的原因。否则,您可以使用CURTIME(),它将为您提供当前时间或当前日期的CURDATE()。你为什么不能用这个?如果我不理解你的问题,请尝试解释你为什么这么做
3 年多之前 回复

1个回答



我想你想使用 addtime()</ code>:</ p>

   update lists 
set datetime = addtime(@ date,@ time)
其中id = @id;
</ code> </ pre>

学习使用正确的参数化查询而不是 而不是使用用户输入值来修改查询字符串。 您的方法可能会导致无法解释的语法错误,并使代码容易受到SQL注入的攻击。<​​/ p>
</ div>

展开原文

原文

I think you want to use addtime():

update lists
    set datetime = addtime(@date, @time)
    where id = @id;

Learn to use proper parameterized queries rather than munging the query string with user input values. Your approach is likely to lead to inexplicable syntax errors and makes the code vulnerable to SQL injection.

doutuan8887
doutuan8887 参数化stackoverflow.com/questions/60174 / ...
3 年多之前 回复
dsyrdwdbo47282676
dsyrdwdbo47282676 也是@Gordon Linoff,也许是愚蠢的问题,但你为什么用它来定义变量@而不是美元符号$?
3 年多之前 回复
doupixian1436
doupixian1436 凯特纳,那就是我在我写的SQL表中看到的,所以我认为这是订单格式。 此新的datetime列存储在DATETIME数据类型中。
3 年多之前 回复
dongyin8009
dongyin8009 因为我在我的表单中有两个单独的字段用于日期和事件开始时的时间,但在我的表中已经有2个单独的列,一个是DATE数据类型的日期,另一个是TIME数据类型的timestart。 正如我所说,这是试图简化应用程序。 因此,如果我现在将这两列合并为一个名为datetime且数据类型为datetime,我还需要在我的php文件中修改我的querry。 希望它更清楚。 如果没有,请随时问。 也许,它可能不可能,因为我说我是新的。
3 年多之前 回复
douwei2825
douwei2825 拜托,告诉我比@Gordon Linoff更好的方法
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问