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

时间:2013-05-09 01:11:56

标签: c# mysql datetime stored-procedures

仅在数据库保存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

1 个答案:

答案 0 :(得分:3)

无需将此值存储在数据库中。请记住,您始终可以在SQL中检索星期几,例如:

  • 使用DAYNAME命令:

    SELECT DAYNAME(day) FROM tbl_days

  • 使用DAYFORMAT命令:

    SELECT DATE_FORMAT(day, '%W');

有关Date and Time Functions

的MySQL参考手册的更多信息

[编辑]:您可以将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'));