 |
|
[ ASP.NET ] เพิ่มเวลาขึ้นเรื่อยใน Database |
|
 |
|
|
 |
 |
|
แบบนี้ปะ
SELECT DATEADD(MINUTE, 10, columnName) FROM customer
|
 |
 |
 |
 |
Date :
2017-10-05 10:05:20 |
By :
OOP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
CONCEPT ประมาณนี้ครับ คือ หาจำนวนแถวมาก่อน จากนั้น เอาจำนวนแถว * 10
Code (SQL)
SELECT DATEADD(MINUTE, (10*ROW_ID), datecolumn) FROM
(
SELECT datecolumn,ROW_NUMBER() OVER (ORDER BY name ) AS ROW_ID FROM customer
)
ปล. ผมเขียนไม่ได้รันนะครับ ลองเอาไปปรับใช้เอง
|
 |
 |
 |
 |
Date :
2017-10-05 10:38:25 |
By :
OOP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็น Column ที่เราต้องการเพิ่มเวลาให้อะครับ
|
 |
 |
 |
 |
Date :
2017-10-05 10:55:53 |
By :
OOP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แบบนั้นก็ได้ครับ แต่ต้องบอกก่อนว่าถ้าเทียบ Performance คุณต้องดึงข้อมูลขึ้นมา แล้ววนลูป For เพื่อ Add Date เข้าไป ซึ่งจะทำให้โปรแกรมช้ามากๆนะครับ
|
 |
 |
 |
 |
Date :
2017-10-05 11:42:56 |
By :
OOP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 6 เขียนโดย : meatspin เมื่อวันที่ 2017-10-05 11:12:22
รายละเอียดของการตอบ ::
ขอถามให้ชัดๆนะ
คือใน database มันมี
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.00
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.10
แล้วอยากเพิ่มเป็น
Code
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.00
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.10
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.20
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.30
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.40
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.10
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.20
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.30
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.40
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.50
หรือต้องการให้เป็น
Code
ชื่อ A นามสกุล B อยู่แถวที่ 1 เวล 10.00
ชื่อ C นามสกุล D อยู่แถวที่ 2 เวล 10.10
ชื่อ E นามสกุล F อยู่แถวที่ 2 เวล 10.20
ชื่อ G นามสกุล H อยู่แถวที่ 2 เวล 10.30
ชื่อ I นามสกุล J อยู่แถวที่ 2 เวล 10.40
หรือไม่ ลองยกตัวอย่างมาดู
ว่า
1. ให้ค้นจากข้อมูลแบบไหน
2. ค้นแล้วออกมายังไง
3. จากนั้นให้เพิ่มยังไง
จะช่วยในการตอบคำถามได้เยอะขึ้นนะครับ
|
 |
 |
 |
 |
Date :
2017-10-05 12:21:27 |
By :
g |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เพื่อที่จะไม่ต้อง วนลูปอัพเดทที่ละ record
Code (C#)
datetime datelastformlist2 = xxxxxxxxxxxxxxxxx; // เอาค่ามาใส่เอง
string sql = "update tb " +
"set datecolumn_สมมติ = DATEADD(MINUTE, (10 * tmp.ROW_ID), @datelastformlist2) " +
"from tablename_สมมติ as tb inner join ( " +
" SELECT id, ROW_NUMBER() OVER (ORDER BY name ) AS ROW_ID FROM tablename_สมมติ " +
" where condition " +
") as tmp on tb.id=tmp.id ";
var rs = db.query(sql, datelastformlist2);
|
 |
 |
 |
 |
Date :
2017-10-05 13:52:36 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากความเห็น 3 + ที่ผมโพส น่าจะประยุกต์ได้แล้วนะครับ
เอาเวลาสุดท้ายมาตั้ง + ด้วยนาที ที่เพิ่มจาก row_id x 10
ก็อยู่ที่ว่าคุณจะ ค้นหาอะไร
|
 |
 |
 |
 |
Date :
2017-10-05 15:36:42 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อย่างที่ถามคุณค้นหาอะไร
where อะไร ถึงได้ เรคคอร์ด หลายเรคคอร์ด
เห็นกรอกเป็นเป็นเลขจำเพาะ แล้ว จะไปคิวรี่หลาย record ยังไง
|
 |
 |
 |
 |
Date :
2017-10-05 20:12:31 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แสดงว่าไม่วิเคราะห์โค๊ดที่ทำเป็นตัวอย่างเลยมั้งครับเนี่ย
convert(time,SYSDATETIME()) เปลี่ยนเป็น เวลาสุดท้ายเท่านั้นเอง
|
 |
 |
 |
 |
Date :
2017-10-06 09:45:52 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กรรมแท้ๆ
เหมือนเล่นงูกินหาง แล้ววนในอ่าง อาบอบนวด ซะงั้น 5555
งาน 10 นาที กลับ ใช้เวลาถึง 10 วัน ในการ create
แถมความต้องการก็ไม่ชี้ชัดอีกต่างหาก
|
 |
 |
 |
 |
Date :
2017-10-06 09:56:20 |
By :
Dr.K |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|