2013-02-12 102 views
-1

我想寫基本上導致預約時間的查詢。這是我想要的全貌。 enter image description here轉換varchar int時間格式SQL

問題是FL_CO_APPOINTMENT表中的時間列是varchar(50),並且處於期望列約會格式是09:00 - 11:00 01/12/2012。我如何操作時間列是varchar(50)來獲得結果,如所需的公式所述。我有谷歌,但沒有找到任何幫助。謝謝。

+3

恕我直言,從完美的數據庫架構設計的遠。是否有可能將模式更改爲具有普通的'datetime'列(例如'app_start'和'app_end')?如果是,那麼你將配備所有的日期和時間功能。 – peterm 2013-02-12 05:45:47

+0

不,我不能改變設計。但我可以向我的上司建議。謝謝。 – Ahmed 2013-02-12 06:35:32

+0

你正在使用哪些DBMS?甲骨文? Postgres的? – 2013-02-12 07:22:29

回答

2

您可以將varchar字段轉換爲datetime。

試試這個

select '('+Convert(varchar,convert(datetime,'09:00 AM'),108) + ' - ' +Convert(varchar, dateadd(minute,10,convert(datetime,'09:00 AM')),108) +') '+ Convert(varchar,convert(datetime,'2013-02-04 00:00:00.000'),101) 

按照你表

select '('+Convert(varchar,convert(datetime,[Time]),108) + ' - ' +Convert(varchar, dateadd(minute,[DURATION],convert(datetime,[TIME])),108) +') '+ Convert(varchar,convert(datetime,[AppointmentDate]),101) 
from FL_CO_APPOINTMENT JOIN FL_FAULT ON .... 
0

我諮詢資深他們認爲我這個解決方案。 substring(CONVERT(varchar,convert(datetime,FL_CO_APPOINTMENT.AppointmentDate)+FL_CO_APPOINTMENT.Time),13,5) +'' - ''+ substring(convert(varchar,DATEADD(HOUR,2,convert(datetime,FL_CO_APPOINTMENT.AppointmentDate)+FL_CO_APPOINTMENT.Time)),13,5) +'' ''+ convert(varchar, FL_CO_APPOINTMENT.AppointmentDate, 11) Appointment

謝謝大家對你的答案