保存到mysql数据库时的日期

时间:2010-04-14 20:45:05

标签: mysql

在我的PHP代码中,我要求用户从一些下拉字段中选择日,月和年,其中值为1,2,3等,而不是01,02,03。

然后将这些组合成一个字符串,如“YYYY-MM-DD”,用于插入数据库(在日期字段中)。

错过了最初的0,我以为我是以错误的格式发送字符串,例如“YYYY-MD”或YYYY-MM-D“,但后来我注意到它们在数据库中以正确的格式显示:即使我提交了YYYY-MD,它也显示为YYYY-MM-DD。

这是mysql的正常行为吗?如果是这样,我可以避免担心更改我的应用程序中的代码吗?

2 个答案:

答案 0 :(得分:0)

是的,这是正常行为。如果您的列的类型为DATE,则MySQL会在插入日期时将字符串转换为日期的内部表示形式。只要订单正确(年,月,日),MySQL在解析日期时就很灵活。显示日期时,无论您在存储数据时使用何种格式,它都将使用“YYYY-MM-DD”。

以下是manual的相关页面中的一些引用:

  

MySQL以'YYYY-MM-DD'格式显示DATE值

     

MySQL以标准输出格式检索给定日期或时间类型的值,但它会尝试解释您提供的输入值的各种格式(例如,当您指定要分配或比较的值时)日期或时间类型)。仅支持以下各节中描述的格式。预计您提供合法的价值。如果您使用其他格式的值,可能会出现不可预测的结果。

     

虽然MySQL试图以多种格式解释数值,但日期必须以年 - 月 - 日的顺序(例如,'98 -09-04')给出,而不是以月 - 日 - 年或日 - 其他地方常用的月份订单(例如,'09 -04-98','04 -09-98')。

答案 1 :(得分:0)

我建议将输入传递给mktime(),然后使用date()对其进行格式化,这样您就可以确保始终获得所需的格式。

此外,您可以更好地防止注射攻击

相关问题