【问题标题】:Sql Query To get dataSql 查询获取数据
【发布时间】:2009-04-02 15:25:41
【问题描述】:

我有一张名为 DrTimings 的表格,其中医生每天的时间是这样的。

DrID(int identity)  StartTime(DateTime)             EndTime(DateTime)
    1                3/31/2009 8:00:00 AM   3/31/2009 10:30:00 AM

我有另一个名为 TimeList 的表,其中包含 3 个字段

SlotID   SlotStartTime(varchar)   SlotEndTime(varchar)
1         8:00AM                      8:15AM
2         8:15AM                      8:30AM
3         8:30AM                     8:45AM

一直持续到晚上 7:00

我有另一个表 DrDutyDetails,其中 DrTiming 设置为这样的整个月。

DrID    StartTime             EndTime              DateOfAllocation
1       4/5/2009 8:00:00 AM   4/5/2009 9:30:00 AM   4/5/2009 12:00:00 AM
2       4/12/2009 8:00:00 AM  4/12/2009 9:30:00 AM  4/12/2009 12:00:00 AM
likewise

我有另一个名为 AppointmentSchedule 的表格,当患者请求预约时会填写该表格

AppointmentID    SlotID  AppointmentDate
1                1        4/5/2009 
2                3        4/12/2009

我有一个约会时间表表格,我在其中选择 DrID 和约会日期。然后与尚未在 Appointmentschedule 中的日期相对应的时段,但时段应该在开始时间和结束时间之间,在 DrTimings 和 TimeSlots 中应该填写下拉列表。我需要一个查询来实现这一点。 例如:如果患者输入“2009 年 4 月 5 日”,那么除了 1 和 3 之外的插槽,但我想获得 biw DrTimings。

同样我想按时间搜索。意味着如果患者输入任何时间 b/w DrTimings 例如:上午 8:30,那么可用的第一个日期必须显示在文本框中

【问题讨论】:

  • 约会日程如何与drid相关联?

标签: sql-server-2005


【解决方案1】:

您将需要考虑对日期值进行一些转换/转换。这个MSDN article 为您提供了一些关于您需要使用什么的信息。

您可以通过多种方式执行此操作,但理想情况下,您可以执行CONVERT(VARCHAR(50), StartTime) 之类的操作来获取完全格式化的时间。然后,既然你知道它的结束格式是 08:00AM,你可以做一个RIGHT(CONVERT(VARCHAR(50), StartTime), 7),它会得到你的时间值。

现在,您知道如何将日期分成多个部分,您可以从这里执行查询项目所需的各种操作。

为了比较起见,我会将“TimeList”数据存储为 DateTime 值,这样您就可以使用标准时间比较来实际允许您使用“Between”等函数。您可以将它们存储为 1/1/1900 08:00AM 或类似名称。但这需要更改数据模型。如果你想要一些有用的 SQL 来处理这类事情,这里有一篇关于“Essential SQL Server Date, Time, and DateTime Functions”的精彩文章。

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多