時間値を含む動的テーブルの挿入について質問があります。これは、db に挿入する必要があるテーブルの例です。
Schedule for 12/15/2015
08:30 AM - 09:30 AM Remove
09:30 AM - 10:30 AM Remove
10:30 AM - 11:30 AM Remove
11:30 AM - 12:30 PM Remove
02:30 PM - 03:30 PM Remove
時差が常に同じであれば、値を挿入しても問題ありません。最初のいくつかの時間枠は 30 分間増加しますが、その後、午後 12 時から午後 5 時までずっとギャップがあります。私の問題はそこにあります。これらの値を保存する最善の方法がわかりません。値は動的に作成され、それらはすべて同じ日付にリンクされているためです。タイムブレイクがなければとても簡単ですが、タイムギャップがあるこの場合は本当に複雑に見えます. これをデータベースに保存する最良の方法を誰かが教えてくれたら教えてください。今のところ、開始時刻、終了時刻、日付、間隔を保存するだけで、時間が増えるたびに増加します。それは次のようになります。
ID Date Start End Interval
4 2015-12-15 08:30:00.0000000 15:30:00.0000000 60
この場合、クエリで値を引き出してテーブルにタイムスロットを表示したい場合、60分間隔でしか実行できません。しかし、12:30PM から 2:30PM までのギャップがあります。そのギャップは、ユーザーの希望に応じて常に異なる場合があります。
テーブルを作成するクエリは次のとおりです。
<cfscript>
param name = "FORM.datepicker" type = "date";
param name = "FORM.stime" type = "time";
param name = "FORM.etime" type = "time";
param name = "FORM.meeting" type = "range" min = "5" max = "60";
TimeStart = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.stime), minute(FORM.stime), 0);
TimeEnd = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.etime), minute(FORM.etime), 0);
meetingLength = dateAdd("n", FORM.meeting*-1, TimeEnd);
</cfscript>
<form name="myForm" id="myForm" method="post" autocomplete="off">
<cfoutput>
<table>
<thead>
<tr>
<th>Schedule for #dateFormat(FORM.datepicker, "mm/dd/yyyy")#</th>
</tr>
</thead>
<tbody>
<cfloop condition="TimeStart LTE meetingLength">
<cfset TimeEnd = dateAdd("n", FORM.meeting, TimeStart)>
<tr>
<td></td>
<td>#timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
<td><a class="remove" onClick ="removeTime($(this))">Remove</a></td>
</tr>
<cfset TimeStart = dateAdd("n", FORM.meeting, TimeStart)>
</cfloop>
<tr>
<td>
<input type="button" name="Submit" value="Save" onClick="saveSchedule('#FORM.datepicker#','#FORM.stime#','#FORM.etime#','#FORM.meeting#')" />
</td>
</tr>
</tbody>
</table>
</cfoutput>
レコードを挿入するコード:
<cffunction name="Save" access="remote" output="no" returnformat='JSON'>
<cfargument name="datepicker" type="date" required="yes">
<cfargument name="stime" type="numeric" required="yes">
<cfargument name="etime" type="numeric" required="yes">
<cfargument name="meeting" type="numeric" required="yes">
<cfset fncResults = structNew()>
<cfquery name="addSchedule" datasource="Test">
Insert Into Schedule(Date, Start, Eend, meeting)
Values (<cfqueryparam cfsqltype="cf_sql_date" maxlength="10" value="#arguments.datepicker#">,
<cfqueryparam cfsqltype="cf_sql_time" maxlength="10" value="#arguments.stime#">,
<cfqueryparam cfsqltype="cf_sql_time" maxlength="10" value="#arguments.etime#">,
<cfqueryparam cfsqltype="cf_sql_integer" maxlength="2" value="#arguments.meeting#">);
</cfquery>
<cfreturn fncResults>
</cffunction>