字段A时间戳(注册时间), 字段B也是时间戳(本次登陆时间), 请教大侠如何用纯语句实现一下功能
如果注册天数大于30天返回 1, 小于30天返回0
谢谢前辈啊
SELECT
DATEDIFF(B, A) AS `注册天数`,
IF(DATEDIFF(B, A)>30, 1, 0) AS `返回结果`
FROM
表
注
DATEDIFF 用于计算2个日期之间相差的天数,只计算到天的单位
mysql> SELECT DATEDIFF (
-> '2000-01-01 00:00:00.000000',
-> '2000-01-02 05:06:07.000008') A;
+------+
| A |
+------+
| -1 |
+------+
1 row in set (0.00 sec)
IF 相当于 CASE WHEN 的部分功能。
mysql> SELECT IF(1>2, 2, 3) A;
+---+
| A |
+---+
| 3 |
+---+
1 row in set (0.00 sec)
mysql> SELECT
-> CASE WHEN 1 > 2 THEN 2
-> ELSE 3
-> END A;
+---+
| A |
+---+
| 3 |
+---+
1 row in set (0.00 sec)
DATEDIFF(B, A) AS `注册天数`,
IF(DATEDIFF(B, A)>30, 1, 0) AS `返回结果`
FROM
表
注
DATEDIFF 用于计算2个日期之间相差的天数,只计算到天的单位
mysql> SELECT DATEDIFF (
-> '2000-01-01 00:00:00.000000',
-> '2000-01-02 05:06:07.000008') A;
+------+
| A |
+------+
| -1 |
+------+
1 row in set (0.00 sec)
IF 相当于 CASE WHEN 的部分功能。
mysql> SELECT IF(1>2, 2, 3) A;
+---+
| A |
+---+
| 3 |
+---+
1 row in set (0.00 sec)
mysql> SELECT
-> CASE WHEN 1 > 2 THEN 2
-> ELSE 3
-> END A;
+---+
| A |
+---+
| 3 |
+---+
1 row in set (0.00 sec)
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-04-25
你会最简单的吧?如果不会找本书看一下就明白,
这个问题可以这样解决,分别找ID=1对应的A列和B列的值,得到的即注册时间,登陆时间,然后比较这两个时间执行不同就完成了,这里可能用到Datatime类
这个问题可以这样解决,分别找ID=1对应的A列和B列的值,得到的即注册时间,登陆时间,然后比较这两个时间执行不同就完成了,这里可能用到Datatime类
第2个回答 2013-04-25
SELECT TIMESTAMPDIFF(DAY,'2009-10-01','2009-09-01');
第3个回答 2013-04-25
SELECT (CASE WHEN to_data( dlsj ) - to_data (zcsj )>30 THEN 1 ELSE 0 END ) a FROM table_name;
第4个回答 2013-04-25
有什么问题,写一下