我在SIGN表上的TIME_SIGNED_UP属性上插入值时遇到问题。 SIGN表应显示TIME_SIGNED_UP属性,如下所示 签名表 TIME_SIGNED_UP 3年2个月 2年1个月
I have created the table here
DROP TABLE IF EXISTS SIGN_UP;
CREATE TABLE SIGN_UP(
S_PIN VARCHAR(4),
F_ID INTEGER(4),
TIME_SIGNED_UP DATE,
....
....);
我在这里插入值,但我不知道如何计算日期间隔以便在表格上生成值。自从用户签名3年和2个月以来,我希望这个价值一直在增长。这一特定价值必须在一年后的4年和2个月之后。
这是我的计算。 插入签名值(' HELLO',(' 2011-08-00' - NOW()));
YouR帮助将不胜感激。
答案 0 :(得分:0)
你可以在MySQL中使用date_add
来添加日期间隔
答案 1 :(得分:0)
用户注册后,您不需要每天在数据库中更改该值。您将保留该值以了解他们注册时的真实数据。然后,您可以根据今天的日期(请求查询/页面的那一天)计算差异
现在计算用户注册后的持续时间,可以通过多种方式完成。
如果您希望使用MySQL计算此信息 你可以试试这个
SELECT TIMESTAMPDIFF(YEAR,CURDATE(), TIME_SIGNED_UP) AS years,
TIMESTAMPDIFF(MONTH,CURDATE(), TIME_SIGNED_UP) AS months
FROM SIGN_UP
但是如果你想使用PHP找到结果,你可以尝试这个(代码没有经过测试但应该可以工作)
// $row is the data set rom after querying the database
$datetime1 = new DateTime($row['TIME_SIGNED_UP']);
$datetime2 = new DateTime('now');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y year(s), %m month(s)');
发表评论后编辑
尝试这样插入值(你不能插入HELLO,因为你的列定义是VARCHAR(4)
INSERT INTO SIGN_UP(S_PIN, F_ID, TIME_SIGNED_UP )
VALUES('HELL', 4,
CAST(DATE_ADD(CURDATE(), INTERVAL (UNIX_TIMESTAMP(CURDATE()) - UNIX_TIMESTAMP('2014-08-01')) SECOND) AS DATE)
)