在数据库中存储星期几和时间

本文关键字:时间 数据库 存储 | 更新日期: 2023-09-27 18:12:51

仅在数据库中存储星期几和时间保存0000-00-00 00:00:00,期望的数据应该像Monday 8:30 AM

存储过程

    CREATE DEFINER=`admin`@`192.168.21.%` PROCEDURE `AddDay`(d DATETIME)
BEGIN
    INSERT INTO `tbl_days`(`day`) VALUES(d);
END
c#代码:

StringBuilder sb = new StringBuilder();
            sb.Append(cmbDay.Text.Trim()).Append(" ");
            sb.Append(cmbHour.Text.Trim()).Append(":");
            sb.Append(cmbMinutes.Text.Trim()).Append(" ");
            sb.Append(cmbTime.Text.Trim());
            string day = sb.ToString();

如果我将数据类型从DATETIME更改为VARCHAR,问题将得到解决,如何解决此问题?还是直接用VARCHAR ?

在数据库中存储星期几和时间

不需要将此值存储在数据库中。请记住,您总是可以在SQL中检索星期几,如:

  • 使用DAYNAME命令:

    SELECT DAYNAME(day) FROM tbl_days

  • 使用DAYFORMAT命令:

    SELECT DATE_FORMAT(day, '%W');

更多信息请参见MySQL日期和时间函数参考手册

[EDIT]:您可以将day列类型声明为TIMESTAMP,然后您的INSERT查询可能类似于

INSERT INTO tbl_days (day) VALUES (NOW());

或具有显式输入,例如:

SET @date = CONCAT($year,'-',$month,'-',$day,'-',$hour,'-',$minute,'-',$second);
INSERT INTO tbl_days (day) VALUES (STR_TO_DATE(@date,'%Y-%c-%e-%k-%i-%s'));