 |
|
C# คือผมต้องการค้นหาข้อมูลโดยใช้ DateTimePicker ค้นหาข้อมูลพนัก ตั้งแต่วันเข้าทำงาน จนถึงวัน ผ่านงาน |
|
 |
|
|
 |
 |
|
ไม่น่ายากนะครับ ในฐานข้อมูลก็อาจจะเก็บวันที่เริ่มเข้ามาทำงาน และก็เก็บสถานะพนักงาน
สถานะอาจจะเก็บเป็น 'ทดลองงาน' กับ 'พนักงานประจำ'
เวลา Select ข้อมูลก็ประมาณ
"Select * From tbl_Employee Where (Status = 'พนักงานประจำ') And (StartDate Between dtp1 And dtp2)"
เงื่อนไขประมาณนี้ได้ไหมครับ พนักงานที่ ผ่านแล้ว และ เริ่มทำงานตั้งแต่ Datetimepicker1 ถึง Dtp2 
จุดประสงค์ เพื่อหาว่า คนที่เข้ามาทำงาน ช่วงวันที่เท่านี้ ถึง เท่านี้ เช็คจากสถานะว่า ปัจจุบัน เป็นพนักงานประจำ หรือยัง (ผ่านยัง)
|
ประวัติการแก้ไข 2013-09-16 20:41:57 2013-09-16 20:43:39 2013-09-16 20:43:56
 |
 |
 |
 |
Date :
2013-09-16 20:41:30 |
By :
01000010 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Quote:ขอคำแนะนำหน่อยครับ
เล่าเรื่อง ตรรกะ ให้ฟังแบบสนุกฯ
สมมุติโจทย์ว่า บริษัท "ขี้ข้าพลอย" มึนนโยบาย ข้อ x.x ทดลองงาน 3 วัน เช่น
วันเริ่มต้นทำงาน : 2013-09-18
ครบกำหนดทดลองงาน : 2013-09-20
Code (SQL)
USE [yourDB]
GO 3
DECLARE @Employees AS TABLE (
EmpID INT IDENTITY(1,1),
EmpCode VARCHAR(MAX) NOT NULL DEFAULT CONVERT(VARCHAR(MAX),NEWID()),
WorkingStart DATE NOT NULL DEFAULT GETDATE(),
ProbationEnd DATE NOT NULL DEFAULT DATEADD(DAY, - 1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) + 3, 0))
)
INSERT @Employees DEFAULT VALUES;
INSERT @Employees DEFAULT VALUES;
SELECT * FROM @Employees
|
 |
 |
 |
 |
Date :
2013-09-18 08:57:22 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจที่พี่สื่อครับ ปต่ไม่เข้าใจ SQL T_T"
|
 |
 |
 |
 |
Date :
2013-10-01 20:22:18 |
By :
ธีระวุฒิ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คำสั่ง GO 2 บรรทัดสุดท้าย
หมายความว่า มันทำซ้ำคำสั่ง SELECT * FROM @Employee 2 ครั้ง เพราะฉะนั้นผลลัพธ์ของ
Query ด้านล่างนี้จะได้จำนวนระเบียน (แถว) ทั้งหมดเท่ากับ 4 ระเบียนครับ
สรุป คำสั่ง GO = ทำงานซ้ำ 1 ครั้ง
GO 1234 = ทำงานซ้ำ 1,234 ครั้ง
Code (SQL)
USE tempdb
GO 3
DECLARE @Employees AS TABLE (
EmpID INT IDENTITY(1,1),
EmpCode VARCHAR(MAX) NOT NULL DEFAULT CONVERT(VARCHAR(MAX),NEWID()),
WorkingStart DATE NOT NULL DEFAULT GETDATE(),
ProbationEnd DATE NOT NULL DEFAULT DATEADD(DAY, - 1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) + 3, 0))
)
INSERT @Employees DEFAULT VALUES;
INSERT @Employees DEFAULT VALUES;
SELECT * FROM @Employees
GO 2
|
 |
 |
 |
 |
Date :
2013-10-01 23:36:51 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผลลัพธ์ของคำสั่ง #NO 6

|
 |
 |
 |
 |
Date :
2013-10-01 23:40:17 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ..พี่ ที่เสียสละเวลามาอธิบาย ขอบคุณครับ
|
 |
 |
 |
 |
Date :
2013-10-02 10:06:15 |
By :
ธีระวุฒิ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
นายอย่าไปฟังเขาเลย เขาเป็นคนแบบนี้แหละ จริงๆเขาก็ไม่ใช่คนหรอก เขามาจากนอกโลก
เราแนะนำนายดังนี้
https://www.thaicreate.com/tutorial/sql-now.html
https://www.thaicreate.com/tutorial/sql-mysql-datediff.html
วิธีก็
SELECT * FROM พนักงาน WHERE DATEDIFF(วันที่เข้าทำงาน,NOW()) >= 90 AND วันที่เข้าทำงาน BETWEEN dateTimePicker1 AND dateTimePicker2
dt1 กับ dt2 คือ
string d1 = dateTimePicker1.Value.Year + "/" + dateTimePicker1.Value.Month + "/" + dateTimePicker1.Value.Day;
string d2 = dateTimePicker2.Value.Year + "/" + dateTimePicker2.Value.Month + "/" + dateTimePicker2.Value.Day;
ลองประยุกต์ดูครับ ไม่แน่ใจว่า syntax SQL ของผมถูกต้องไหม แต่หลักการก็ประมาณนี้แหละครับ
|
 |
 |
 |
 |
Date :
2013-10-02 10:53:29 |
By :
jjjj |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไข AND วันที่เข้าทำงาน BETWEEN dateTimePicker1 AND dateTimePicker2
เป็น AND วันที่เข้าทำงาน BETWEEN dt1 AND dt2 ครับ 
|
 |
 |
 |
 |
Date :
2013-10-02 10:55:49 |
By :
jjjj |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|