ฉันพบปัญหาในที่ทำงานวันนี้คุณต้องตรวจสอบตามเวลา แต่ผลลัพธ์การสืบค้นไม่ถูกต้อง ตัวอย่างเช่นคุณต้องค้นหาสมาชิกที่ลงทะเบียนบนเว็บไซต์ตั้งแต่ปี 2007-10-12 ถึง 2007-10-31 31 เป็นพื้นฐานที่ไม่ได้แสดงและผลลัพธ์ก็เหมือนกันหลังจากการทดสอบหลายครั้ง โปรแกรมการดีบักพบว่ามีปัญหากับคำสั่ง SQL
คำสั่ง SQL มีดังนี้: เลือก * จาก UserInfo โดยที่ระบอบการปกครอง> = '2007-10-12' และระบอบการปกครอง <= '2007-10-31' ในตอนต้นไม่มีข้อผิดพลาดในคำสั่ง SQL นี้ แต่หลังจากค่าของฟิลด์ที่เกี่ยวข้องในฐานข้อมูลค่าของค่าที่บันทึกไว้ไม่ใช่แบบง่าย ๆ แต่รูปแบบของวันที่+เวลานั่นคือ: yyyy -MM-DD HH: MM: SS เท่ากัน ฉันจะทำอย่างไร?
ไม่ต้องกังวล ASP ให้ฟังก์ชั่นวันที่และการลบเพื่อช่วยเราแก้ปัญหานี้
1. วันที่เพิ่ม
ฟังก์ชั่นวันที่
กลับไปที่วันที่ของช่วงเวลาที่กำหนด
ลงวันที่ (ช่วงเวลาจำนวนวันที่)
ไวยากรณ์ของฟังก์ชั่น dateadd มีพารามิเตอร์ต่อไปนี้
(1) ช่วงเวลาต้องเลือก การแสดงออกของสตริงระบุช่วงเวลาที่จะเพิ่ม สำหรับค่าดูส่วนการตั้งค่า
(2) หมายเลขต้องเลือก นิพจน์เชิงตัวเลขระบุจำนวนช่วงเวลาที่จะเพิ่ม นิพจน์เชิงตัวเลขสามารถเป็นบวก (รับวันที่ในอนาคต) หรือจำนวนลบ (รับวันที่ผ่านมา)
(3) วันที่ต้องเป็นตัวเลือก ตัวแปรอาจเพิ่มข้อความของวันที่บ่งชี้ช่วงเวลา
ภาพประกอบ:
สามารถใช้เพื่อเพิ่มหรือลบช่วงเวลาที่กำหนดจากวันที่ด้วยฟังก์ชัน dateAdd ตัวอย่างเช่น DateAdd สามารถใช้เป็นเวลา 30 วันนับจากวันของวันหรือเวลาหลังจาก 45 นาทีจากนี้ ในการเพิ่มช่วงเวลาทุกวันจนถึงปัจจุบันคุณสามารถใช้จำนวนรายวัน (y) รายวัน (d) หรือหนึ่งสัปดาห์ (w) ของจำนวนรายวัน (y) รายวัน (d) หรือหนึ่งสัปดาห์
ฟังก์ชั่นวันที่ไม่คืนวันที่ไม่ถูกต้อง ตัวอย่างต่อไปนี้จะเพิ่มเดือนในวันที่ 31 มกราคม 2538:
newDate = DateAdd (M, 1, 31-Jan-95)
ในตัวอย่างนี้ DateAdd กลับ 28 กุมภาพันธ์ 2538 แทนที่จะเป็นวันที่ 31 กุมภาพันธ์ 2538 หากวันที่คือวันที่ 31 มกราคม 2539 จะได้รับผลตอบแทน 29 กุมภาพันธ์ 2539 เนื่องจากปี 1996 เป็นปีที่ก้าวกระโดด
หากวันที่คำนวณเป็นก่อน 100 AD ข้อผิดพลาดจะเกิดขึ้น
หากหมายเลขไม่ใช่ค่าประเภทยาวบ้านสี่หลังแรกและห้ารายการเป็นจำนวนเต็มที่ใกล้เคียงที่สุด
2. การลดวันที่
ฟังก์ชั่นวันที่
ส่งคืนช่วงเวลาระหว่างสองวัน
datediff (ช่วงเวลา, วันที่ 1, date2 [, firstdayofweek [, firstweekofyear]))))))))
ไวยากรณ์ของฟังก์ชัน datediff มีพารามิเตอร์ต่อไปนี้:
(1) ช่วงเวลาต้องเลือก การแสดงออกของสตริงระบุช่วงเวลาระหว่างวันที่ 1 ถึงวันที่ 2 สำหรับค่าดูส่วนการตั้งค่า
(2) วันที่ 1, วันที่ 2 ต้องเป็นตัวเลือก นิพจน์วันที่ สองวันสำหรับการคำนวณ
(3) Firstdayofwek สามารถเป็นตัวเลือกได้ ค่าคงที่ในวันแรกในสัปดาห์ที่กำหนด หากไม่ได้ระบุไว้ค่าเริ่มต้นคือวันอาทิตย์ สำหรับค่าดูส่วนการตั้งค่า
(4) ตัวเลือก Firstweekofyear ระบุค่าคงที่ของสัปดาห์แรกของปี หากไม่ได้ระบุไว้จะเป็นค่าเริ่มต้นของสัปดาห์ที่ 1 มกราคม สำหรับค่าดูส่วนการตั้งค่า
ภาพประกอบ:
ฟังก์ชั่น datediff ใช้เพื่อกำหนดจำนวนช่วงเวลาที่กำหนดระหว่างสองวัน ตัวอย่างเช่น datediff สามารถใช้ในการคำนวณจำนวนวันที่แตกต่างระหว่างสองวันหรือจำนวนรายสัปดาห์ระหว่างวันและวันสุดท้ายของปี
ในการคำนวณจำนวนวันระหว่างวันที่ 1 ถึงวันที่ 2 คุณสามารถใช้จำนวนวัน (y) หรือวัน (d) ของหนึ่งปี เมื่อช่วงเวลาคือจำนวนวัน (w) ของสัปดาห์ (W) วันที่ DATEDIFF จะส่งคืนหมายเลขรายสัปดาห์ระหว่างสองวัน หากวันที่ 1 คือวันจันทร์จำนวนของ DateFIFF จะถูกคำนวณจนถึงวันที่ 2 ก่อนจำนวนวันจันทร์ ผลลัพธ์นี้มีวันที่ 2 โดยไม่มีวันที่ 1 หากช่วงเวลาคือสัปดาห์ (WW) ฟังก์ชั่น datediff จะส่งคืนหมายเลขรายสัปดาห์ระหว่างสองวันในตารางปฏิทิน คำนวณจำนวนฟังก์ชั่นระหว่างวันที่ 1 ถึงวันที่ 2 หากวันที่ 2 คือวันอาทิตย์ DateFIFF จะคำนวณวันที่ 2 แต่ถึงแม้ว่าวันที่ 1 คือวันอาทิตย์วันที่ 1 จะไม่ถูกคำนวณ
หากวันที่ 1 ช้ากว่าวันที่ 2 ฟังก์ชั่น datediff จะส่งกลับหมายเลขลบ
พารามิเตอร์ FirstdayOfweek มีผลต่อการคำนวณสัญลักษณ์ช่วงเวลา WW
หากวันที่ 1 หรือวันที่ 2 เป็นข้อความวันที่ปีที่กำหนดจะกลายเป็นส่วนหนึ่งของวันที่ อย่างไรก็ตามหากวันที่ 1 หรือวันที่ 2 รวมอยู่ในเครื่องหมายใบเสนอราคา () และละเว้นปีทุกครั้งที่นิพจน์วันที่ 1 หรือวันที่ 2 คำนวณในรหัสปีปัจจุบันจะถูกแทรก ด้วยวิธีนี้คุณสามารถเขียนรหัสโปรแกรมที่เหมาะสมสำหรับปีที่แตกต่างกัน
เมื่อช่วงเวลาเป็นปี (yyyy) เมื่อเทียบกับวันที่ 1 มกราคมของวันที่ 31 ธันวาคมและปีที่จะมาถึงแม้ว่าจะมีเพียงหนึ่งวันเพียงหนึ่งวัน Datediff กลับมา 1 เพื่อระบุความแตกต่างของปี