Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > SqlCommand ครับ การค้นหาเวลาอ่ะครับ ตอนนี้ผมเก็บเวลา เป็น Datetime โดยเก็บเป็น วันที่เริ่ม กับวันที่คืน ในDatabase ครับ



 

SqlCommand ครับ การค้นหาเวลาอ่ะครับ ตอนนี้ผมเก็บเวลา เป็น Datetime โดยเก็บเป็น วันที่เริ่ม กับวันที่คืน ในDatabase ครับ

 



Topic : 038090



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์




ตอนนี้ผมเก็บเวลา เป็น Datetime โดยเก็บเป็น วันที่เริ่ม กับวันที่คืน ในDatabase ครับ

มันเป็นเรื่องเกี่ยวกับการจอง โดยการจอง ผู้ใช้ต้องกำหนดช่วงเวลา วันที่เริ่ม กับวันที่คืน อ่ะครับ
โดยอุปกรณ์ เดี้ยวกันไม่สามารถจองในช่วงเวลาเดี้ยวกันได้
ตอนนี้ผมเขียน

Code
SELECT HW_ID
FROM TB_HARDWARE
WHERE (NOT (HW_ID SELECT DISTINCT HW_ID FROM TB_USELINE WHERE
(START_USE_DATE BETWEEN '2010-01-04' AND '2010-01-04')
AND(END_USE_DATE BETWEEN '2010-01-04' AND '2010-01-04'))


แล้วผมก็กำหนดว่า ให้แสดง อุปกรณ์ที่ไม่ได้ทำงานช่วงนี้ โดยการ NOT ค่า ที่ได้จาก SubQuery
มันก็สามารถใช้งานได้ครับ

แต่ ผมไปเจอ อีกเงื่อนไขหนึงไปไม่ถูกเลย ในกรณีที่มีข้อมูลอุปกรณ์ ที่จองระยะยาวเช่น
2009-12-04 ถึง '2010-02-04'
เงื่อนไขข้องผมก็จะไม่สามารถค้นหาได้
ยังไงช่วยแนะนำหน่อยนะครับ ขอบคุณมากๆๆครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-01 12:41:50 By : ksillapapan View : 1541 Reply : 11
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


จริงๆ วิธีแก้แบบหายขาดก็แค่เพิ่ม col status ของ hw ไปนะครับ เวลายืม ก็ให้ status เป็น occupied ถ้าว่างแล้วไม่มีใครใช้ก็ available หรือคำไหนก็ได้ที่คุณจะใช้

แต่เนื่องจากมันเป็นระบบแล้ว จะให้แก้ไขใหม่ก็จะดูยุ่งยากคุณอีก เลยอยากถามว่าที่คุณว่าถ้าจองใช้แบบยาวๆ แล้ว script เก่าใช้ไม่ได้เนี่ย หมายถึงลองอย่างนี้แล้วใช้ไม๊

SELECT HW_ID
FROM TB_HARDWARE
WHERE (NOT (HW_ID SELECT DISTINCT HW_ID FROM TB_USELINE WHERE
(START_USE_DATE BETWEEN '2009-12-04' AND '2010-02-04') <- เปลี่ยนเวลา
AND(END_USE_DATE BETWEEN '2009-12-04' AND '2010-02-04')) <- เปลี่ยนเวลา







Date : 2010-02-01 13:27:31 By : salapao_codeman
 


 

No. 2

Guest


SELECT DISTINCT HW_ID FROM TB_USELINE WHERE
(convert(varchar(10),START_USE_DATE,120) BETWEEN '2010-01-04' AND '2010-01-04')
AND (convert(varchar(10),END_USE_DATE,120) BETWEEN '2010-01-04' AND '2010-01-04')

ลองแก้เปนแบบนี้ดูนะ
Date : 2010-02-01 13:35:46 By : ฺBug Seeker
 

 

No. 3



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


คือมันเป็นการจอง อ่ะครับ ถ้าคนละช่วงเวลาอุปกรณ์เดี้ยวกันจะจองได้ ครับ
ส่วนที่ผมโพทส์ไว้ อ่ะครับ มันใช้ได้แล้ว แต่ติดตรงที่

ถ้าข้อมูลเป็น
HW1 มีการจอง 2009-01-04 ถึง 2009-01-29
เป็นการจอง หลายวัน

แล้วถ้าผมต้องการจอง '2010-01-04' ถึง '2010-01-04' ระบบจะต้องไม่แสดง HW1 แต่เงื่อนไขของผมมันไม่สามารถจัดการตรงนี้ได้ เพราะมันเช็ค แค่ว่า START_USE_DATE,END_USE_DATE ถ้าอยู่ในช่วงที่ผมจะจองจะไม่แสดง
แต่กรณีปัญหาSTART_USE_DATE = 2009-01-04 มันไม่ได้อยู่ในช่วง '2010-01-04' ถึง '2010-01-04' และ

END_USE_DATE = END มันไม่ได้อยู่ในช่วง '2010-01-04' ถึง '2010-01-04' มันจึงทำให้ข้อมูล HW1 นั้นถูกแสดงด้วย
จึงทำให้มีข้อผิดผลาด เพราะมีการจองซ้ำ ในช่วงเวลาเดี้ยวกัน
ปัญหาของผมอยู่ตรงนี้ครับ ช่วยแนะนำหน่อยนะครับ
Date : 2010-02-01 13:46:16 By : ksillapapan
 


 

No. 4



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


***** HW1 มีการจอง 2009-01-04 ถึง 2010-01-29

อีกตัวอย่างของปัญหาครับ
ปัญหาที่ยังไม่ได้ ครับ
นาย A จอง ของวันที่ 2 - 15
นายB ต้องการจองของ วันที่ 3 - 4 แสดงว่านาย B จะไม่สามารถจองของนาย A ได้ เพราะนาย A จอง อยู่ ครับ

แต่ที่ผมเขียน มันแก้ปัญหา
ปัญหาที่ได้แล้ว

HW1 จองวันที่ 2 - 4
HW2 จองวันที่ 8 - 9

ถ้าผมต้องการจอง วันที่ 4-5 ระบบจะแสดง HW2 มาให้ครับ อันนี้ได้แล้วครับ แต่ถ้าเงื่อนไขข้างบนไม่ได้ ครับ
ช่วยชี้แนะหน่อยนะครับ ขอบคุณครับ
Date : 2010-02-01 14:04:16 By : ksillapapan
 


 

No. 5



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


Code
SELECT
TB_HARDWARE. HW_ID
FROM
TB_HARDWARE
WHERE
TB_HARDWARE.HW_ID IN
(
SELECT
DISTINCT
TB_USELINE .HW_ID
FROM
TB_USELINE
WHERE
NOT
TB_USELINE .HW_ID
BETWEEN
'2009-12-04'
AND
'2010-02-04'

)


sub query บอกว่า เลือกค่าที่ไม่มีและไม่ซ้ำของ HW_ID จากเทเบิล TB_USELINE โดย HW_ID อยู่ระหว่าง 2009-12-04 และ 2010-02-04
main query บอกว่า เลือกค่าที่มีใน HW_ID จากเทเบิล TB_HARDWARE ที่มีค่าอยู่ในเทเบิล sub query ด้วย

ผลที่ได้ คุณจะได้ค่า HW_ID ที่ยังไม่ถูกใช้ หรือยังไม่ถูกจอง ผมลองใน sql แล้วก็ผ่านนะ ไม่รู้ project คุณจะได้หรือเปล่า ช่วยๆ ครับ
Date : 2010-02-01 14:23:39 By : numenoy
 


 

No. 6



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้ผมสามารถหาได้ว่า HW_ID ไหนถูกจอง แล้วในช่วงเวลา ที่ผมต้องการจอง คือ
ผมต้องการจอง วันที่ 4 - 6
HW1 จอง 5-9 ระบบจะไม่แสดง
HW2 จอง 3-4 ระบบจะไม่แสดง
HW3 จอง 4-4 ระบบจะไม่แสดง

แต่ ถ้า
HW4 จอง 1-9 ถ้าถูกต้องระบบจะไม่แสดงด้วยเพราะว่า
ถูกจอง ตั้งแต่วันที่ 1 - 9 แล้ว ผมไม่สามารถจองวันที่ 4-6 ได้ ครับ


ที่คุณ numenoy แนะนำมาจะแก้ ปัญหาของ HW1 HW2 HW3
แต่จะไม่สามารถจัดการ HW4 ได้ครับ

ยังไงก็ขอขอบคุณมาก ๆๆครับ ^^

ช่วยแนะนำหน่อยนะครับ ผ่านตรงนี้ได้เสร็จแล้ว T-T
Date : 2010-02-01 14:39:46 By : ksillapapan
 


 

No. 7



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


TT ยังรอคอยอยู่นะครับ T-T
Date : 2010-02-01 15:05:40 By : ksillapapan
 


 

No. 8



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


TT
Date : 2010-02-01 15:43:29 By : ksillapapan
 


 

No. 9



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


ผมต้องการจอง วันที่ 4 - 6
HW1 จอง 5-9 ระบบจะไม่แสดง
HW2 จอง 3-4 ระบบจะไม่แสดง
HW3 จอง 4-4 ระบบจะไม่แสดง

เงื่อนไข 1-9 มันก็คล้ายๆ กับ 5-9 มักก็น่าจะถูกต้องนะครับ เพราะ จอง 4-6 ก็เป็น subset ของ 1-9, 5-6 ทั้งสองตัวอยู่แล้ว ไม่น่าหลุด query ได้

ลองไล่ดู query ใหม่ครับ...มันแปลกๆ
Date : 2010-02-01 15:54:14 By : numenoy
 


 

No. 10



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Code
SELECT HW_ID
FROM TB_HARDWARE
WHERE (NOT (HW_ID SELECT DISTINCT HW_ID FROM TB_USELINE WHERE
(START_USE_DATE = '2009-12-04')
AND(END_USE_DATE = '2010-01-04'))

Date : 2010-02-01 15:55:11 By : tungman
 


 

No. 11



โพสกระทู้ ( 179 )
บทความ ( 0 )



สถานะออฟไลน์


ได้เเล้วครับ

Code (C#)
SELECT DISTINCT HW_ID FROM TB_USELINE WHERE
(('2010-01-11' BETWEEN  START_USE_DATE AND  END_USE_DATE)OR
('2010-01-15' BETWEEN  START_USE_DATE AND  END_USE_DATE)OR
(START_USE_DATE BETWEEN '2010-01-11' AND '2010-01-15')OR
(END_USE_DATE BETWEEN '2010-01-11' AND '2010-01-15')
)


ขอบคุณทุกๆคนมากๆๆ นะครับ
Date : 2010-02-02 10:22:58 By : ksillapapan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : SqlCommand ครับ การค้นหาเวลาอ่ะครับ ตอนนี้ผมเก็บเวลา เป็น Datetime โดยเก็บเป็น วันที่เริ่ม กับวันที่คืน ในDatabase ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่