Datepicker
是一个供用户轻松选择填写表单日期的选项。在coldfusion中,有一个填充表单,需要使用datepicker
并在用户选择日期后填写表格,格式为yyyy / mm / dd,默认格式为MySql可读取。如果我更改为dd / mm / yyyy并单击保存到MySql将收到错误,因为我知道MySql的默认格式是yyyy / mm / dd。
<input type="text" name="Date_joined" size="auto" style="border:0px"required="yes">
这是弹出datepicker的功能:
<a href="javascript:showCal('Calendar1')">
这是datepicker的标志:
<img align="right" src="calendar_menu.gif" alt="Select a date" border="0"></a>
用户选择日期是否有任何解决方案,输入文本将显示dateformat dd / mm / yyyy,但仍可以保存到MySql中而不会出错。
答案 0 :(得分:1)
如何让MySQL接受DD / MM / YYYY格式的用户输入,以便记录数据
如果要保存代表的数字和短划线的字符串,您希望它显示在屏幕上的格式,那么只需将数据库列设为a CHAR(10)并完成它。
但是,如果你想对它进行计算,通过它聚合数据,用它做什么,然后将它保存为日期类型。不要担心数据库UI如何代表您的日期值。也许它与您希望它在HTML页面上显示的方式不同,它并不重要。重要的是,作为日期对象,您可以轻松地使用和显示该值,无论您喜欢什么。
据我所知,MySQL只接受格式为YYYY / MM / DD的数据类型日期。
不是那样的。
https://dev.mysql.com/doc/refman/5.7/en/datetime.html DATE类型用于具有日期部分但没有时间部分的值。 MySQL 在&#39; YYYY-MM-DD&#39;中检索并显示 DATE值格式。 &GT;支持的范围是&#39; 1000-01-01&#39;到&#39; 9999-12-31&#39;。
看到&#34;检索并显示&#34; (强调我的)?它只是一个日期对象,&#34; 00:00:00&#34;作为时间部分。
因此,您的表单字段接受日期的字符串表示形式,您需要将其转换为正确的日期对象。根据Dan的建议,您可以轻松使用parseDateTime()
来完成此任务。
#writeOutput( parseDateTime( now() ) )#
将输出{ts '2018-03-14 15:29:19'}
。
如果您的表单字段包含表示日期的有效字符串(例如2018-03-14
):
#writeOutput( parseDateTime( form.myDateField ) )#
将输出{ts '2018-03-14 00:00:00'}
。
因此该值将保存为日期对象,而不包含时间部分。当您稍后阅读保存的值时,只需使用dateFormat()
以您喜欢的任何格式显示它。
答案 1 :(得分:0)
(从评论中移除以获得更高的知名度)
Adrian's answer的一个重要补充。在这种特定情况下,您必须使用parseDateTime()的日期掩码。掩码控制parseDateTime()如何解释输入。如果没有正确的掩码,结果可能对您的特定输入有误,即dd/mm/yyyy
。
代码:
<cfscript>
dateString = "05/08/2018";
writeOutput("<br>Without mask = "& parseDateTime( dateString) );
writeOutput("<br>With mask = "& parseDateTime( dateString, "dd/MM/yyyy") );
</cfscript>
结果:
Without mask = {ts '2018-05-08 00:00:00'} (May 8, 2018)
With mask = {ts '2018-08-05 00:00:00'} (August 5, 2018)