我怎么能在mysql上插入日期间隔

时间:2014-10-31 17:19:05

标签: mysql

我在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帮助将不胜感激。

2 个答案:

答案 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)
)