【问题标题】:Confuse query add date not in table for mysql混淆查询添加日期不在 mysql 表中
【发布时间】:2013-10-02 05:22:32
【问题描述】:

对不起, 如果该日期不在mysql表中,我将添加日期 例如我有表

ID      |   name    |   date        |   clock in    |   clock out
---------------------------------------------------------------
1001    |   A       |   2013-09-18  |   09:40       |   17:15
1001    |   A       |   2013-09-20  |   08:20       |   17:35
1001    |   A       |   2013-09-21  |   08:40       |   17:40
1001    |   A       |   2013-09-23  |   08:10       |   17:50

那么,如何将日期添加到无表并设置时钟输入和时钟输出设置为空 例子

ID      |   name    |   date        |   clock in    |   clock out
---------------------------------------------------------------
1001    |   A       |   2013-09-18  |   09:40       |   17:15
1001    |   A       |   2013-09-19  |   null        |   null
1001    |   A       |   2013-09-20  |   08:40       |   17:40
1001    |   A       |   2013-09-21  |   08:10       |   17:50
1001    |   A       |   2013-09-22  |   null        |   null
1001    |   A       |   2013-09-23  |   08:10       |   17:50

谢谢

【问题讨论】:

  • 你为什么要这样做?
  • 你不必这样做并填写你的数据库,你可以选择不在表格中的日期
  • 你想说什么我听不懂
  • 我,对不起。我将创建数据库考勤

标签: mysql sql date


【解决方案1】:

如果您仍然感兴趣,这就是您所需要的:

SELECT 
COALESCE(id,1001) id,
COALESCE(name,'A') name,
fixed_days.fixed_date,
clockin,clockout
FROM t 
RIGHT JOIN 
(SELECT CURDATE() as fixed_date 
UNION ALL SELECT CURDATE() - INTERVAL 1 day 
UNION ALL SELECT CURDATE() - INTERVAL 2 day 
UNION ALL SELECT CURDATE() - INTERVAL 3 day 
UNION ALL SELECT CURDATE() - INTERVAL 4 day 
UNION ALL SELECT CURDATE() - INTERVAL 5 day 
UNION ALL SELECT CURDATE() - INTERVAL 6 day) AS fixed_days 
ON t.record_date = fixed_days.fixed_date
WHERE fixed_days.fixed_date <= (select max(record_date) from t);

SQL Fiddle..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多