none
[ASP.NET] อยากทราบวิธีการ Filter DateTime ใน LinqDataSource ครับ RRS feed

  • คำถาม

  • คือผมใช้ LinqDataSource ให้มัน WHERE ข้อมูลที่ผมต้องการตาม Criteria ครับ

    ผมเรียกใช้ MyLinq.Where = "stampDate = @stampDate"; จากนั้นก็ Add Parameter เข้าไป โดยใช้ sDate.ToString() เป็น Value ครับ ปรากฏคือ Error Expression

     

    ผมเลยลอง Google ดูมีคนบอกให้ใช้ Pure Query ไปเลย นั่นคือใช้

    MyLinQ.Where = "stampDate = DateTime.Pharse(" + sDate.ToString() + ")";

     

    แต่ผลที่ได้ก็ยัง Error Expression อยู่ครับ อยากทราบทางแก้หน่อยครับ

     

    ขอบคุณครับ


    ========================================= Natthavat S.
    14 สิงหาคม 2554 16:55

คำตอบ

  • ได้ละครับ

    สุดท้ายตกที่วิธีนี้ครับ

     

    MyLinQ.Where = "stampDate >= @stampDate";
    MyLinQ.WhereParameters.Add("stampDate", System.Data.DbType.DateTime, sDate.ToString("dd/MM/yyyy hh:mm:ss"));
    

    ตกที่วิธีเดิมครับ เพียงแต่ตอนเพิ่ม Parameter ให้กำหนด DB Type เป็น DateTime ไปด้วย


    ========================================= Natthavat S.
    • ทำเครื่องหมายเป็นคำตอบโดย Natthavat28 21 สิงหาคม 2554 3:37
    21 สิงหาคม 2554 3:37

ตอบทั้งหมด

  • ลองอันนี้ดูค่ะ

     

    MyLinQ.Where = "stampDate = “ + Convert.ToDateTime(sDate.ToString());

     

    และอย่าลืมตรวจสอบ format ของ “stampDate” ด้วย เพราะว่ามีหลาย format มากใน DateTime เช่น short time หรือ long time

    ส่วน format ที่ต้องการ compareกับ “sDate” string โดย “sDate” string จะถูก convert ให้เป็น format ที่ต้องการ compare


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • ทำเครื่องหมายเป็นคำตอบโดย supa_sModerator 17 สิงหาคม 2554 2:14
    • ยกเลิกการทำเครื่องหมายเป็นคำตอบโดย Natthavat28 17 สิงหาคม 2554 18:57
    15 สิงหาคม 2554 5:33
    ผู้ดูแล
  • Exception ครับ

     

    Operator '>=' incompatible with operand types 'DateTime?' and 'Int32'

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Web.Query.Dynamic.ParseException: Operator '>=' incompatible with operand types 'DateTime?' and 'Int32'

     

     

    นี่คือ ผลที่มัน Query ไปครับ

    ((AvaiableDate >= 17/12/2554 0:00:00) AND (AvaiableDate <= 25/12/2554 0:00:00))
    



    ========================================= Natthavat S.
    17 สิงหาคม 2554 18:59
  • ลองดูลิงค์นี้ค่ะ

    Setting the LinqDataSource Where Clause using DateTime Column

     


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    18 สิงหาคม 2554 4:46
    ผู้ดูแล
  • ได้ละครับ

    สุดท้ายตกที่วิธีนี้ครับ

     

    MyLinQ.Where = "stampDate >= @stampDate";
    MyLinQ.WhereParameters.Add("stampDate", System.Data.DbType.DateTime, sDate.ToString("dd/MM/yyyy hh:mm:ss"));
    

    ตกที่วิธีเดิมครับ เพียงแต่ตอนเพิ่ม Parameter ให้กำหนด DB Type เป็น DateTime ไปด้วย


    ========================================= Natthavat S.
    • ทำเครื่องหมายเป็นคำตอบโดย Natthavat28 21 สิงหาคม 2554 3:37
    21 สิงหาคม 2554 3:37