MySQL列数据类型,以接受时间或单词列表

MySQL列数据类型,以接受时间或单词列表,mysql,sqldatatypes,custom-data-type,Mysql,Sqldatatypes,Custom Data Type,大家好。 我花了一整天的时间寻找我问题的答案,但不幸的是,我没有找到我想要的答案 我试图通过在PHP和MySQL数据库中创建一个web应用程序来自动化我们目前正在使用的一些过程 我想在excel中准备员工时间表,然后使用php将其上传到MySQL。大多数数据库字段都是直截了当的:员工ID为INT,日期格式为date 我面临的问题是时间。当员工工作时,我希望及时上传他们的轮班开始时间和结束时间,但是,如果他们不工作,我希望数据库以字母形式存储他们的状态:休息一天,休年假,请医疗假,请紧急假等等 我

大家好。 我花了一整天的时间寻找我问题的答案,但不幸的是,我没有找到我想要的答案

我试图通过在PHP和MySQL数据库中创建一个web应用程序来自动化我们目前正在使用的一些过程

我想在excel中准备员工时间表,然后使用php将其上传到MySQL。大多数数据库字段都是直截了当的:员工ID为INT,日期格式为date

我面临的问题是时间。当员工工作时,我希望及时上传他们的轮班开始时间和结束时间,但是,如果他们不工作,我希望数据库以字母形式存储他们的状态:休息一天,休年假,请医疗假,请紧急假等等

我不知道什么样的数据类型将支持这一点。ie:接受特定结果代码列表中的时间或条目

任何协助都将不胜感激

穆罕默德

旁注: 在我开始学习如何编写代码的时候,我问了这个问题,我学会了避免的一个错误是混合业务逻辑和应用程序逻辑。这个问题可能对将来的某个人有用,我的建议是,任何新开发人员都要确保业务模型逻辑可能不会与您的应用程序逻辑齐头并进,但总有办法让它工作


Mohamed.

MySQL中没有这样的数据类型

VARCHAR
字段将同时接受日期和您的自定义代码,但如果编写查询时遇到困难:在转换为报告的时间之前,您必须始终检查数据


我只需要创建三个可为空的字段:
startTime
endTime
缺勤原因
并填充
缺勤原因
,当且仅当这两个时间都为
NULL
时,MySQL中没有此类数据类型

VARCHAR
字段将同时接受日期和您的自定义代码,但如果编写查询时遇到困难:在转换为报告的时间之前,您必须始终检查数据


我只需要创建三个可为空的字段:
startTime
endTime
缺勤原因
并填充
缺勤原因
,当且仅当这两个时间都为
NULL
时,您可以使用VarChar或Char字段来存储时间或文本值。但是,我建议对不同的事情使用不同的字段。例如数据类型time的开始时间和结束时间。以及一个单独的字段,用于休假类型等,类型为VarChar或Char。

您可以使用VarChar或Char字段来存储时间或文本值。但是,我建议对不同的事情使用不同的字段。例如数据类型time的开始时间和结束时间。还有一个单独的字段,用于VarChar或Char类型的休假类型等。

这里有一个想法,将另一列作为状态,其中一个状态将是工作状态,其他状态将如所述。只有工作状态才会在“开始时间”和“结束时间”列中显示数据。在我看来,这是最好的解决方案,允许更好的搜索功能、更干净的数据库和更全面的可读性

但是,如果您确实想要,和/或有任何理由不可以增加一列,您可以始终将时间存储为文本


PS:数据库的另一个技巧是删除date列并以DATETIME格式存储这两个时间,这可能从不太可能到几乎不可能,这取决于您在数据库中存储的工作班次,但也有可能在一天开始一个班次,第二天结束,即使您认为您永远不需要它,这是一种很好的做法,可以使数据库更具弹性。如果您以后不得不更改它,那么这样做会很痛苦。

这里有一个想法,在状态栏中添加另一个列,其中一个状态将是工作状态,其他状态将如所述。只有工作状态才会在“开始时间”和“结束时间”列中显示数据。在我看来,这是最好的解决方案,允许更好的搜索功能、更干净的数据库和更全面的可读性

但是,如果您确实想要,和/或有任何理由不可以增加一列,您可以始终将时间存储为文本


PS:数据库的另一个技巧是删除date列并以DATETIME格式存储这两个时间,这可能从不太可能到几乎不可能,这取决于您在数据库中存储的工作班次,但也有可能在一天开始一个班次,第二天结束,即使您认为您永远不需要它,这是一种很好的做法,可以使数据库更具弹性。如果您将来不得不更改它,那么这样做会很痛苦。

您可能正在尝试将业务逻辑与字段类型结合起来。如果您允许的话,如果他们正在工作,那么开始和结束时间就可以了。允许它为NULL,然后需要一个原因,如AL、ML、EL等。因此,我认为您并不是在寻找数据类型,确切地说,而是一个逻辑解决方案,它可能不属于数据库,但由结构支持。谢谢vgoff。我想你完全明白我的意思。艾琳克斯在下面给出了一些很好的见解。是的,正是我所想的您可能正在尝试将业务逻辑和字段类型结合起来。如果您允许的话,如果他们正在工作,那么开始和结束时间就可以了。允许它为NULL,然后需要一个原因,如AL、ML、EL等。因此,我认为您并不是在寻找数据类型,确切地说,而是一个逻辑解决方案,它可能不属于数据库,但由结构支持。谢谢vgoff。我想你完全明白我的意思。艾琳克斯在下面给出了一些很好的见解。是的,正是我所想的谢谢Aerinx,您的输入实际上是m