Coldfusion datepicker dd / mm / yyyy但MySQL的格式为yyyy / mm / dd

时间:2018-03-12 07:21:54

标签: html coldfusion

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中而不会出错。

2 个答案:

答案 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

TryCF Example

代码:

<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)