mysql - 根据输入的日期更新数据库

标签 mysql sql sql-server date

我的数据库中有一行三列,即

start_date = 2013-12-1
end_date = 2013-12-31
status = 'a'

我想通过添加新记录来更改日期状态

start_date = 2013-12-10
end_date = 2013-12-20
status = 'u'

在这种情况下,我可以轻松更新数据库,更新后的数据库将 -

1)start_date = 2013-12-1
end_date = 2013-12-9
status = 'a'
2)start_date= 2013-12-10
end_date = 2013-12-20
status = 'u'
3)start_date = 2013-12-21
end_date = 2013-12-31
status = 'a'

但是当我再次想要更改日期的状态时:

start_date = 2013-12-15
end_date = 2013-12-25
status= 'a'

所以,我希望在我的数据库中得到这样的结果

1)start_date = 2013-12-1
end_date = 2013-12-9
status = 'a'
2)start_date = 2013-12-10
end_date = 2013-12-14
status = 'u'
3)start_date = 2013-12-15
end_date = 2013-12-25
status = 'a'
4)start_date = 2013-12-26
end_date = 2013-12-31
status = 'a'

那么,我将如何管理更新查询或任何其他方式来执行相同的操作?

最佳答案

目前您在数据库中代表的时间段 例如 [日期从、日期到、状态]。事情变得复杂 当你的片段重叠时。我的建议是 你用这种方式表示它[日期,状态]。一年刚刚过去 365-366 天,因此不需要存储太多数据 (实际上对于一个严肃的 RDBMS 来说这没什么)。

如果你代表每个日期,对你来说会更容易 作为数据库中的单独行。那么你需要只 将某些日期更新为“u”,将其他日期更新为“a”状态。 但您的更新查询将会简单得多。

关于mysql - 根据输入的日期更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298299/

相关文章:

数据库 |获取数据库错误,无效使用组功能

php - mySql 没有即时创建新表

sql - 计算多列中 "empty"行的记录并连接

mysql - 使用索引优化带有 ORDER BY 的 SELECT 语句

mysql - 条件 str_to_date() 如果格式是一种类型,否则不执行任何操作

mysql - 你能解决这个简单的 SQL 查询吗?

SQL Server - 创建为数据库中的所有表运行的单个触发器

sql-server - 在 WCF 中处理图像

mysql - sql循环更新数据

mysql - 相关组/列表的数据库设计