มากกว่า

แปลงฟิลด์ DateTime เป็น Just Date ใน Label Expression

แปลงฟิลด์ DateTime เป็น Just Date ใน Label Expression


ฉันมีช่อง DateTime (เช่น CreatedDate) และต้องการแสดงเฉพาะวันที่ที่มีป้ายกำกับ ฉันจะตั้งค่านิพจน์ป้ายกำกับเพื่อทำสิ่งนี้โดยใช้ python ได้อย่างไร


เป็นเรื่องตลกที่ล่าม python (เครื่องคิดเลขภาคสนาม) ถือว่าฟิลด์วันที่และเวลาของ Arcgis เป็นข้อความ Unicode เพื่อแยกวันที่ออกจากสตริงนี้ เราควรแปลงเป็น datetime แล้วแยกวันที่แล้วแปลงเป็นสตริง!

รหัสสแตนด์อโลน (สมมติว่าคุณมีรูปแบบวันที่และเวลาเช่น10/8/2558 3:24:53 น.):

พิมพ์ str(datetime.datetime.strptime(u'10/8/2015 3:24:53 AM',"%m/%d/%Y %H:%M:%S %p"))

นิพจน์ป้ายกำกับ (ตัวแยกวิเคราะห์หลาม):

def FindLabel ( [DateModified] ): ส่งคืน str(datetime.datetime.strptime([DateModified],"%m/%d/%Y %H:%M:%S %p").date())

วันที่ในฟิลด์ DateTime คืออักขระ 10 ตัวแรกของฟิลด์

ฉันลองทำสิ่งต่อไปนี้ในฟิลด์ที่เรียกว่า last_edited_date.

ในนิพจน์ป้ายกำกับของคุณ ตั้งค่า parser ของคุณเป็น Python

ทำเครื่องหมายที่ช่อง Advanced และตั้งค่านิพจน์ของคุณดังต่อไปนี้:

def FindLabel ( [last_edited_date] ): ส่งคืน [last_edited_date][:10]

และเปลี่ยน last_edited_date กับสิ่งที่เรียกว่าเขตข้อมูลของคุณ กุญแจสำคัญที่นี่คือการใช้ความสามารถในการตัดสตริงของหลาม นั่นคือ, [:10] เพื่อรับ 10 อักขระแรกของฟิลด์

ผลลัพธ์มีลักษณะดังนี้:


จัดรูปแบบช่องวันที่และเวลา

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


5 คำตอบ 5

ดูเหมือนว่าจะใช้งานได้และรักษาความแม่นยำไว้เช่นกัน:

CAST เป็น DATETIME2(7) แปลงค่า TIME(7) ( @T ) เป็น DATETIME2 โดยที่ส่วนของวันที่คือ '1900-01-01' ซึ่งเป็นค่าเริ่มต้นของประเภทวันที่และวันที่เวลา (ดู datetime2 และความคิดเห็น * ที่หน้า CAST และ CONVERT ที่ MSDN)

* . เมื่อข้อมูลอักขระที่แสดงเฉพาะวันที่หรือส่วนประกอบเวลาเท่านั้นถูกแปลงเป็นชนิดข้อมูล datetime หรือ smalldatetime ส่วนประกอบเวลาที่ไม่ระบุจะถูกตั้งค่าเป็น 00:00:00.000 และ องค์ประกอบวันที่ที่ไม่ระบุถูกตั้งค่าเป็น 1900-01-01.

ฟังก์ชัน DATEADD() และ DATEDIFF() จะดูแลส่วนที่เหลือ เช่น เพิ่มความแตกต่างของจำนวนวันระหว่าง 1900-01-01 และค่า DATE ( @D )

ตามที่สังเกตเห็นโดย @Quandary นิพจน์ข้างต้นถือว่าไม่ถูกกำหนดโดย SQL Server หากเราต้องการนิพจน์ที่กำหนดขึ้นเอง ให้พูดเพราะมันใช้สำหรับคอลัมน์ PERSISTED จะต้องแทนที่ '19000101' ** ด้วย 0 หรือ CONVERT(DATE, '19000101', 112) :

**: DATEDIFF(วัน, '19000101', d) ไม่ได้กำหนดไว้ เนื่องจากจะทำการแปลงสตริงเป็น DATETIME โดยปริยาย และการแปลงจากสตริงเป็นวันที่และเวลาจะกำหนดเฉพาะเมื่อใช้รูปแบบเฉพาะเท่านั้น


11 คำตอบ 11

หากประเภทคอลัมน์คือ DateTime ใน SQL มันจะเก็บเวลาที่คุณส่งผ่านหรือไม่

จะดีกว่าถ้าบันทึกวันที่อย่างถูกต้อง:

แล้วจัดรูปแบบเมื่อคุณต้องการแสดง:

หรือหากคุณใช้ EditorFor:

ในการเพิ่มคุณสมบัติให้กับโมเดลของคุณให้เพิ่มรหัสนี้:

ฉันแค่ต้องการชี้แจงสำหรับคำตอบนี้ว่าการพูดว่า 'หากคุณกำลังใช้ EditorFor' หมายความว่าคุณต้องมีเทมเพลต EditorFor สำหรับประเภทของค่าที่คุณพยายามแสดง

เทมเพลตตัวแก้ไขเป็นวิธีที่ยอดเยี่ยมในการจัดการการควบคุมซ้ำๆ ใน MVC:

คุณสามารถใช้มันสำหรับประเภทที่ไร้เดียงสาเช่น String ตามที่ฉันได้ทำไปแล้วข้างต้น แต่เหมาะอย่างยิ่งสำหรับการให้คุณสร้างเทมเพลตชุดฟิลด์อินพุตสำหรับประเภทข้อมูลที่ซับซ้อนยิ่งขึ้น

ฉันต้องจัดการกับสถานการณ์นี้ด้วยตัวเอง - พบวิธีง่ายๆ ในการทำเช่นนี้ เพียงแค่ใส่คำอธิบายประกอบทรัพย์สินของคุณในแบบจำลองดังนี้:

มันจะซ่อนปุ่มเวลาจากตัวเลือกวันที่ด้วย

ขออภัยหากคำตอบนี้ช้าไปหน่อย )

ใช้งานได้ถ้าคุณต้องการแสดงในกล่องข้อความ:

วันที่/เวลาในฐานวันที่จะไม่เป็น จัดรูปแบบ รุ่นเลย มันจะเป็นแค่วันที่/เวลาเอง คุณเป็นอย่างไรบ้าง แสดง วันที่/เวลานั้นเมื่อคุณดึงค่าจากฐานข้อมูลเป็นคนละเรื่อง ฉันสงสัยอย่างยิ่งว่าคุณต้องการเพียงแค่:

ใช่ ถ้าคุณดูฐานข้อมูลโดยใช้ SQL Server Studio หรืออะไรก็ตาม ตอนนี้คุณจะเห็นเวลาเที่ยงคืน - แต่นั่นไม่เกี่ยวข้อง และเมื่อคุณดึงวันที่ออกจากฐานข้อมูลและแสดงให้ผู้ใช้เห็น แล้ว คุณสามารถใช้รูปแบบที่เกี่ยวข้องได้

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

โดยที่ d เป็นตัวระบุรูปแบบวันที่และเวลามาตรฐานสำหรับรูปแบบวันที่แบบสั้น (ซึ่งหมายความว่าจะพิจารณาการตั้งค่าวัฒนธรรมปัจจุบันด้วย)

นั่นแหละที่ฉันพูดซ้ำๆ - ว่าเมื่อคุณ แสดงวันที่/เวลาให้กับผู้ใช้นั่นคือเวลาที่จะจัดรูปแบบเป็นวันที่โดยไม่มีเวลา

แก้ไข: หากไม่ได้ผล ควรมีวิธีการตกแต่งโมเดลหรือมุมมองด้วยสตริงรูปแบบ หรืออะไรทำนองนั้น ฉันไม่ใช่คน MVC จริงๆ แต่รู้สึกเหมือนอยู่ที่นั่น ควร เพื่อเป็นแนวทางที่ดีในการทำเช่นนี้อย่างเปิดเผย


ฟังก์ชันวันที่และเวลาใน Standard SQL

เอาต์พุตทั้งหมดจะถูกจัดรูปแบบโดยอัตโนมัติตาม ISO 8601 โดยแยกวันที่และเวลาด้วย T

CURRENT_DATETIME

คำอธิบาย

ส่งกลับเวลาปัจจุบันเป็นวัตถุ DATETIME วงเล็บเป็นทางเลือกเมื่อถูกเรียกโดยไม่มีอาร์กิวเมนต์

ฟังก์ชันนี้รองรับพารามิเตอร์เขตเวลาเสริม ดูคำจำกัดความเขตเวลาสำหรับข้อมูลเกี่ยวกับวิธีการระบุเขตเวลา

ส่งคืนประเภทข้อมูล

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

วันเวลา

คำอธิบาย

  1. สร้างวัตถุ DATETIME โดยใช้ค่า INT64 แทนปี เดือน วัน ชั่วโมง นาที และวินาที
  2. สร้างวัตถุ DATETIME โดยใช้วัตถุ DATE และวัตถุ TIME ที่เป็นตัวเลือก
  3. สร้างวัตถุ DATETIME โดยใช้วัตถุ TIMESTAMP รองรับพารามิเตอร์เสริมเพื่อระบุเขตเวลา หากไม่มีการระบุเขตเวลา ระบบจะใช้เขตเวลาเริ่มต้น UTC

ส่งคืนประเภทข้อมูล

สารสกัด

คำอธิบาย

ส่งคืนค่าที่สอดคล้องกับส่วนที่ระบุจาก datetime_expression ที่ให้มา

  • ไมโครวินาที
  • มิลลิวินาที
  • SECOND
  • นาที
  • ชั่วโมง
  • DAYOFWEEK
  • วัน
  • DAYOFYEAR
  • WEEK : ส่งกลับหมายเลขสัปดาห์ของวันที่ในช่วง [0, 53] สัปดาห์เริ่มต้นด้วยวันอาทิตย์ และวันที่ก่อนวันอาทิตย์แรกของปีอยู่ในสัปดาห์ที่ 0
  • WEEK(<WEEKDAY>) : ส่งกลับจำนวนสัปดาห์ของ datetime_expression ในช่วง [0, 53] สัปดาห์เริ่มต้นใน WEEKDAY วันที่เวลาก่อนสัปดาห์แรกของปีอยู่ในสัปดาห์ที่ 0 ค่าที่ถูกต้องสำหรับวันธรรมดาคือ วันอาทิตย์ วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ และวันเสาร์
  • ISOWEEK : ส่งกลับหมายเลขสัปดาห์ ISO 8601 ของ datetime_expression ISOWEEK เริ่มต้นในวันจันทร์ ค่าที่ส่งคืนอยู่ในช่วง [1, 53] ISOWEEK แรกของแต่ละปี ISO เริ่มในวันจันทร์ก่อนวันพฤหัสบดีแรกของปีปฏิทินเกรกอเรียน
  • เดือน
  • ไตรมาส
  • ปี
  • ISOYEAR : ส่งกลับ ISO 8601 ปีที่เลขสัปดาห์ ซึ่งเป็นปีปฏิทินเกรกอเรียนที่มีวันพฤหัสบดีของสัปดาห์ที่เป็น date_expression
  • DATE
  • เวลา

ค่าที่ส่งกลับจะตัดรอบระยะเวลาการสั่งซื้อที่ต่ำกว่า ตัวอย่างเช่น เมื่อแยกวินาที EXTRACT จะตัดทอนค่ามิลลิวินาทีและไมโครวินาที

ส่งคืนประเภทข้อมูล

INT64 ยกเว้นในกรณีต่อไปนี้:

ในตัวอย่างต่อไปนี้ EXTRACT ส่งคืนค่าที่สอดคล้องกับส่วนของเวลา HOUR

ในตัวอย่างต่อไปนี้ EXTRACT จะคืนค่าที่สอดคล้องกับส่วนของเวลาที่ต่างกันจากคอลัมน์ของวันที่และเวลา

ในตัวอย่างต่อไปนี้ datetime_expression ตรงกับวันอาทิตย์ EXTRACT คำนวณคอลัมน์แรกโดยใช้สัปดาห์ที่เริ่มต้นในวันอาทิตย์ และจะคำนวณคอลัมน์ที่สองโดยใช้สัปดาห์ที่เริ่มต้นในวันจันทร์

DATETIME_ADD

คำอธิบาย

เพิ่มหน่วย int64_expression ของส่วนหนึ่งไปยังวัตถุ DATETIME

DATETIME_ADD รองรับค่าต่อไปนี้สำหรับ part :

  • ไมโครวินาที
  • มิลลิวินาที
  • SECOND
  • นาที
  • ชั่วโมง
  • วัน
  • สัปดาห์ . เท่ากับ 7 DAY s.
  • เดือน
  • ไตรมาส
  • ปี

จำเป็นต้องมีการจัดการพิเศษสำหรับชิ้นส่วน MONTH, QUARTER และ YEAR เมื่อวันที่อยู่ที่ (หรือใกล้) วันสุดท้ายของเดือน หากเดือนผลลัพธ์มีวันน้อยกว่าวัน DATETIME เดิม วันที่แสดงผลจะเป็นวันสุดท้ายของเดือนใหม่

ส่งคืนประเภทข้อมูล

DATETIME_SUB

คำอธิบาย

ลบ int64_expression หน่วยของ part จาก DATETIME

DATETIME_SUB รองรับค่าต่อไปนี้สำหรับ part :

  • ไมโครวินาที
  • มิลลิวินาที
  • SECOND
  • นาที
  • ชั่วโมง
  • วัน
  • สัปดาห์ . เท่ากับ 7 DAY s.
  • เดือน
  • ไตรมาส
  • ปี

ต้องมีการจัดการพิเศษสำหรับชิ้นส่วน MONTH , QUARTER และ YEAR เมื่อวันที่อยู่ที่ (หรือใกล้) วันสุดท้ายของเดือน หากเดือนผลลัพธ์มีวันน้อยกว่าวัน DATETIME 's วันเดิม วันที่แสดงผลจะเป็นวันสุดท้ายของเดือนใหม่

ส่งคืนประเภทข้อมูล

DATETIME_DIFF

คำอธิบาย

ส่งกลับจำนวนช่วงส่วนที่ระบุทั้งหมดระหว่างสองวัตถุ DATETIME ( datetime_expression_a - datetime_expression_b ) หาก DATETIME แรกเร็วกว่าวันที่สอง ผลลัพธ์จะเป็นค่าลบ แสดงข้อผิดพลาดหากการคำนวณล้นประเภทผลลัพธ์ เช่น หากความแตกต่างในไมโครวินาทีระหว่างอ็อบเจ็กต์ DATETIME สองรายการจะล้นค่า INT64

DATETIME_DIFF รองรับค่าต่อไปนี้สำหรับ part :

  • ไมโครวินาที
  • มิลลิวินาที
  • SECOND
  • นาที
  • ชั่วโมง
  • วัน
  • สัปดาห์ : ส่วนวันที่นี้เริ่มต้นในวันอาทิตย์
  • WEEK(<WEEKDAY>) : ส่วนวันที่นี้เริ่มต้นใน WEEKDAY ค่าที่ถูกต้องสำหรับวันธรรมดาคือ วันอาทิตย์ วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ และวันเสาร์
  • ISOWEEK : ใช้ขอบเขตสัปดาห์ ISO 8601 สัปดาห์ ISO เริ่มต้นในวันจันทร์
  • เดือน
  • ไตรมาส
  • ปี
  • ISOYEAR : ใช้ขอบเขตปีที่มีเลขสัปดาห์ ISO 8601 ขอบเขตปี ISO คือวันจันทร์ของสัปดาห์แรกซึ่งวันพฤหัสบดีเป็นปีปฏิทินเกรกอเรียนที่สอดคล้องกัน

ส่งคืนประเภทข้อมูล

ตัวอย่างด้านบนแสดงผลลัพธ์ของ DATETIME_DIFF สำหรับ DATETIME สองวินาทีที่ห่างกัน 24 ชั่วโมง DATETIME_DIFF ที่มีส่วน WEEK คืนค่า 1 เนื่องจาก DATETIME_DIFF นับจำนวนขอบเขตของส่วนในช่วง DATETIME s แต่ละสัปดาห์เริ่มต้นในวันอาทิตย์ ดังนั้นจึงมีขอบเขตส่วนหนึ่งระหว่างวันเสาร์ที่ 2017-10-14 00:00:00 น. และวันอาทิตย์ที่ 2017-10-15 00:00:00 น.

ตัวอย่างต่อไปนี้แสดงผลของ DATETIME_DIFF สำหรับวันที่สองวันในปีต่างๆ DATETIME_DIFF ที่มีส่วนของวันที่ YEAR ส่งคืน 3 เนื่องจากจะนับจำนวนขอบเขตปีปฏิทินเกรกอเรียนระหว่าง DATETIME สองรายการ DATETIME_DIFF ที่มีส่วนของวันที่ ISOYEAR คืนค่า 2 เนื่องจาก DATETIME ที่สองเป็นของ ISO ปี 2015 วันพฤหัสบดีแรกของปีปฏิทิน 2015 คือ 2015-01-01 ดังนั้น ISO ปี 2015 เริ่มต้นในวันจันทร์ที่ 2014-12-29 ก่อนหน้า .

ตัวอย่างต่อไปนี้แสดงผลของ DATETIME_DIFF เป็นเวลาสองวันติดต่อกัน วันแรกตรงกับวันจันทร์และวันที่สองตรงกับวันอาทิตย์ DATETIME_DIFF ที่มีส่วนของวันที่ WEEK คืนค่า 0 เนื่องจากส่วนเวลานี้ใช้สัปดาห์ที่เริ่มต้นในวันอาทิตย์ DATETIME_DIFF ที่มีส่วนของวันที่ WEEK(MONDAY) คืนค่า 1 DATETIME_DIFF ที่มีส่วนของวันที่ ISOWEEK จะคืนค่า 1 ด้วย เนื่องจากสัปดาห์ ISO เริ่มต้นในวันจันทร์

DATETIME_TRUNC

คำอธิบาย

ตัดทอนอ็อบเจ็กต์ DATETIME ตามความละเอียดของ part

DATETIME_TRUNC รองรับค่าต่อไปนี้สำหรับ part :

  • ไมโครวินาที
  • มิลลิวินาที
  • SECOND
  • นาที
  • ชั่วโมง
  • วัน
  • สัปดาห์
  • WEEK(<WEEKDAY>) : ตัด datetime_expression เป็นขอบเขตของสัปดาห์ก่อนหน้า โดยที่สัปดาห์เริ่มต้นใน WEEKDAY ค่าที่ถูกต้องสำหรับวันธรรมดาคือ วันอาทิตย์ วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ และวันเสาร์
  • ISOWEEK : ตัด datetime_expression เป็นขอบเขต ISO 8601 สัปดาห์ก่อนหน้า ISOWEEK เริ่มต้นในวันจันทร์ ISOWEEK แรกของแต่ละปี ISO ประกอบด้วยวันพฤหัสบดีแรกของปีปฏิทินเกรกอเรียนที่สอดคล้องกัน date_expression ใดๆ ที่เร็วกว่านี้จะตัดทอนเป็นวันจันทร์ก่อนหน้า
  • เดือน
  • ไตรมาส
  • ปี
  • ISOYEAR : ตัดทอน datetime_expression เป็นขอบเขตปีที่มีเลขสัปดาห์ของ ISO 8601 ก่อนหน้า ขอบเขตปี ISO คือวันจันทร์ของสัปดาห์แรกซึ่งวันพฤหัสบดีเป็นปีปฏิทินเกรกอเรียนที่สอดคล้องกัน

ส่งคืนประเภทข้อมูล

ในตัวอย่างต่อไปนี้ DATETIME เดิมจะเป็นวันอาทิตย์ เนื่องจากส่วนคือ WEEK(MONDAY) DATE_TRUNC จะส่งกลับ DATETIME สำหรับวันจันทร์ก่อนหน้า

ในตัวอย่างต่อไปนี้ datetime_expression เดิมอยู่ในปฏิทินเกรกอเรียนปี 2015 อย่างไรก็ตาม DATETIME_TRUNC ที่มีส่วนวันที่แบบ ISOYEAR จะตัด datetime_expression เป็นจุดเริ่มต้นของปี ISO ไม่ใช่ปีปฏิทินเกรกอเรียน วันพฤหัสบดีแรกของปีปฏิทิน 2558 คือ 2015-01-01 ดังนั้น ISO ปี 2015 จะเริ่มในวันจันทร์ก่อนหน้า 2014-12-29 ดังนั้นขอบเขตปี ISO ก่อน datetime_expression 2015-06-15 00:00:00 คือ 2014-12-29

FORMAT_DATETIME

คำอธิบาย

จัดรูปแบบวัตถุ DATETIME ตาม format_string ที่ระบุ ดูองค์ประกอบรูปแบบที่รองรับสำหรับ DATETIME สำหรับรายการองค์ประกอบรูปแบบที่ฟังก์ชันนี้รองรับ

ส่งคืนประเภทข้อมูล

วันสุดท้าย

คำอธิบาย

ส่งกลับวันสุดท้ายจากนิพจน์ datetime ที่มีวันที่ โดยทั่วไปจะใช้เพื่อส่งคืนวันสุดท้ายของเดือน

คุณสามารถเลือกระบุส่วนของวันที่ที่จะส่งคืนวันสุดท้ายได้ หากไม่ได้ใช้พารามิเตอร์นี้ ค่าดีฟอลต์คือ MONTH LAST_DAY รองรับค่า date_part ต่อไปนี้:

  • ปี
  • ไตรมาส
  • เดือน
  • สัปดาห์ . เท่ากับ 7 DAY s.
  • สัปดาห์(<WEEKDAY>) . <WEEKDAY> หมายถึงวันเริ่มต้นของสัปดาห์ ค่าที่ใช้ได้คือ วันอาทิตย์ วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ และวันเสาร์
  • ไอโซวีค . ใช้ขอบเขตสัปดาห์ ISO 8601 สัปดาห์ ISO เริ่มต้นในวันจันทร์
  • ไอโซเยียร์. ใช้ขอบเขตปีที่มีเลขสัปดาห์ ISO 8601 ขอบเขตปี ISO คือวันจันทร์ของสัปดาห์แรกซึ่งวันพฤหัสบดีเป็นปีปฏิทินเกรกอเรียนที่สอดคล้องกัน

ส่งคืนประเภทข้อมูล

ทั้งสองนี้จะส่งคืนวันสุดท้ายของเดือน:

ส่งคืนวันสุดท้ายของปี:

ส่งคืนวันสุดท้ายของสัปดาห์สำหรับสัปดาห์ที่เริ่มต้นในวันอาทิตย์:

ส่งคืนวันสุดท้ายของสัปดาห์สำหรับสัปดาห์ที่เริ่มต้นในวันจันทร์:

PARSE_DATETIME

คำอธิบาย

format_string มีองค์ประกอบรูปแบบที่กำหนดวิธีการจัดรูปแบบ datetime_string แต่ละองค์ประกอบใน datetime_string ต้องมีองค์ประกอบที่สอดคล้องกันใน format_string ตำแหน่งของแต่ละองค์ประกอบใน format_string ต้องตรงกับตำแหน่งของแต่ละองค์ประกอบใน datetime_string

สตริงรูปแบบรองรับองค์ประกอบรูปแบบส่วนใหญ่อย่างเต็มที่ ยกเว้น %Q , %a , %A , %g , %G , %j , %P , %u , %U , %V , %w และ %W

PARSE_DATETIME แยกวิเคราะห์สตริงตามกฎต่อไปนี้:

  • ฟิลด์ที่ไม่ระบุ ฟิลด์ที่ไม่ระบุใดๆ จะเริ่มต้นจาก 1970-01-01 00:00:000.0 ตัวอย่างเช่น หากไม่ระบุปี จะมีค่าเริ่มต้นเป็น 1970
  • ชื่อที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ชื่อ เช่น วันจันทร์และกุมภาพันธ์ ไม่พิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • ช่องว่าง ช่องว่างสีขาวที่ต่อเนื่องกันอย่างน้อยหนึ่งช่องในสตริงรูปแบบจะตรงกับช่องว่างสีขาวที่ต่อเนื่องกันเป็นศูนย์หรือมากกว่าในสตริง DATETIME อนุญาตให้เว้นวรรคนำหน้าและต่อท้ายในสตริง DATETIME เสมอ แม้ว่าจะไม่ได้อยู่ในสตริงรูปแบบก็ตาม
  • ลำดับความสำคัญของรูปแบบ เมื่อองค์ประกอบรูปแบบตั้งแต่สององค์ประกอบขึ้นไปมีข้อมูลที่ทับซ้อนกัน โดยทั่วไปแล้วองค์ประกอบสุดท้ายจะแทนที่องค์ประกอบก่อนหน้าใดๆ โดยมีข้อยกเว้นบางประการ ตัวอย่างเช่น ทั้ง %F และ %Y ส่งผลต่อปี ดังนั้นองค์ประกอบก่อนหน้าจะแทนที่รายการในภายหลัง ดูคำอธิบายของ %s , %C และ %y ในองค์ประกอบรูปแบบที่รองรับสำหรับ DATETIME

ส่งคืนประเภทข้อมูล

ตัวอย่างต่อไปนี้แยกวิเคราะห์ตัวอักษร STRING เป็น DATETIME

ตัวอย่างต่อไปนี้แยกวิเคราะห์ตัวอักษร STRING ที่มีวันที่ในรูปแบบภาษาธรรมชาติเป็น DATETIME

องค์ประกอบรูปแบบที่รองรับสำหรับ DATETIME

เว้นแต่จะระบุไว้เป็นอย่างอื่น ฟังก์ชัน DATETIME ที่ใช้สตริงรูปแบบจะสนับสนุนองค์ประกอบต่อไปนี้:

จัดรูปแบบองค์ประกอบ คำอธิบาย ตัวอย่าง
%A ชื่อวันทำงานแบบเต็ม วันพุธ
%a ชื่อวันทำงานแบบย่อ พุธ
%B ชื่อเดือนเต็ม มกราคม
%b หรือ %h ชื่อเดือนย่อ. Jan
%ค ศตวรรษ (ปีหารด้วย 100 และตัดทอนเป็นจำนวนเต็ม) เป็นเลขฐานสิบ (00-99) 20
%ค การแสดงวันที่และเวลา พ. 20 ม.ค. 21:47:00 น. 2021
%D วันที่ในรูปแบบ %m/%d/%y 01/20/21
%d วันของเดือนเป็นเลขฐานสิบ (01-31) 20
%e วันของเดือนเป็นตัวเลขทศนิยม (1-31) ตัวเลขเดี่ยวนำหน้าด้วยช่องว่าง 20
%F วันที่ในรูปแบบ %Y-%m-%d 2021-01-20
%G ISO 8601 ปีที่มีศตวรรษเป็นเลขฐานสิบ ปี ISO แต่ละปีเริ่มต้นในวันจันทร์ก่อนวันพฤหัสบดีแรกของปีปฏิทินเกรกอเรียน โปรดทราบว่า %G และ %Y อาจให้ผลลัพธ์ที่แตกต่างกันใกล้กับขอบเขตปีเกรกอเรียน ซึ่งปีเกรกอเรียนและปี ISO สามารถแยกออกได้ 2021
%g ISO 8601 ปีที่ไม่มีศตวรรษเป็นเลขฐานสิบ (00-99) ปี ISO แต่ละปีเริ่มต้นในวันจันทร์ก่อนวันพฤหัสบดีแรกของปีปฏิทินเกรกอเรียน โปรดทราบว่า %g และ %y อาจให้ผลลัพธ์ที่แตกต่างกันใกล้กับขอบเขตปีเกรกอเรียน ซึ่งปีเกรกอเรียนและปี ISO สามารถแยกออกได้ 21
%H ชั่วโมง (นาฬิกาแบบ 24 ชั่วโมง) เป็นเลขฐานสิบ (00-23) 21
%ผม ชั่วโมง (นาฬิกา 12 ชั่วโมง) เป็นเลขฐานสิบ (01-12) 09
%j วันของปีเป็นเลขฐานสิบ (001-366) 020
%k ชั่วโมง (นาฬิกาแบบ 24 ชั่วโมง) เป็นตัวเลขทศนิยม (0-23) หลักเดียว นำหน้าด้วยช่องว่าง 21
%l ชั่วโมง (นาฬิกา 12 ชั่วโมง) เป็นตัวเลขทศนิยม (1-12) หลักเดียว นำหน้าด้วยช่องว่าง 9
%M นาทีที่เป็นเลขฐานสิบ (00-59)
%m เดือนเป็นเลขฐานสิบ (01-12) 01
%n อักขระขึ้นบรรทัดใหม่
%P ทั้ง am หรือ pm. บ่ายโมง
%p ทั้ง AM หรือ PM PM
%Q ไตรมาสเป็นเลขฐานสิบ (1-4) 1
%R เวลาในรูปแบบ %H:%M 21:47
%r เวลานาฬิกา 12 ชั่วโมงโดยใช้รูปแบบ AM/PM 09:47:00 น.
%S ที่สองเป็นตัวเลขทศนิยม (00-60) 00
%s จำนวนวินาทีตั้งแต่ 1970-01-01 00:00:00 แทนที่องค์ประกอบรูปแบบอื่นๆ ทั้งหมดเสมอ โดยไม่ขึ้นกับตำแหน่งที่ %s ปรากฏในสตริง หากองค์ประกอบ %s หลายรายการปรากฏขึ้น องค์ประกอบสุดท้ายจะมีความสำคัญกว่า 1611179220
%T เวลาในรูปแบบ %H:%M:%S 21:47:00
%t อักขระแท็บ
%ยู เลขสัปดาห์ของปี (วันอาทิตย์เป็นวันแรกของสัปดาห์) เป็นเลขฐานสิบ (00-53) 03
%ยู วันทำงาน (วันจันทร์เป็นวันแรกของสัปดาห์) เป็นเลขฐานสิบ (1-7) 3
%V หมายเลขสัปดาห์ ISO 8601 ของปี (วันจันทร์เป็นวันแรกของสัปดาห์) เป็นเลขฐานสิบ (01-53) หากสัปดาห์ที่มีวันที่ 1 มกราคมมีสี่วันหรือมากกว่าในปีใหม่ แสดงว่าเป็นสัปดาห์ที่ 1 ไม่เช่นนั้นจะเป็นสัปดาห์ที่ 53 ของปีที่แล้ว และสัปดาห์ถัดไปคือสัปดาห์ที่ 1 03
%W เลขสัปดาห์ของปี (วันจันทร์เป็นวันแรกของสัปดาห์) เป็นเลขฐานสิบ (00-53) 03
%w วันทำงาน (วันอาทิตย์เป็นวันแรกของสัปดาห์) เป็นเลขฐานสิบ (0-6) 3
%X การแสดงเวลาในรูปแบบ HH:MM:SS 21:47:00
%x การแสดงวันที่ในรูปแบบ วว/ดด/ปป 01/20/21
%Y ปีที่มีศตวรรษเป็นเลขฐานสิบ 2021
%y ปีที่ไม่มีศตวรรษเป็นเลขฐานสิบ (00-99) โดยมีศูนย์นำหน้าหรือไม่ก็ได้ สามารถผสมกับ %C. หากไม่ระบุ %C ปี 00-68 คือปี 2000 ในขณะที่ปี 69-99 คือปี 1900 21
%% อักขระ % ตัวเดียว %
%E#ส วินาทีที่มีความแม่นยำเศษส่วน # หลัก 00.000
%E*S วินาทีที่มีความแม่นยำเศษส่วนเต็ม (ตัวอักษร '*') 00
%E4Y ปีสี่ตัวอักษร (0001 . 9999) โปรดทราบว่า %Y สร้างอักขระได้มากเท่าที่ใช้ในการแสดงทั้งปี 2021

เว้นแต่จะระบุไว้เป็นอย่างอื่น เนื้อหาของหน้านี้ได้รับอนุญาตภายใต้สัญญาอนุญาต Creative Commons Attribution 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้สัญญาอนุญาต Apache 2.0 สำหรับรายละเอียด โปรดดูนโยบายเว็บไซต์ของ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ


วิธีที่คุณสามารถใช้เพื่อส่งผ่านการแสดงสตริงของค่าวันที่/เวลาระหว่าง X++ และ .NET มีดังนี้:

System.DateTime.GetDateTimeFormats (ป้อน System.Char ของ s.)

ไม่ System.Convert::ToString หรือ System.DateTime.ToString จะแสดงรูปแบบที่ DateTimeUtil::Parse ป้อนได้

รูปแบบสตริง ISO สำหรับวันที่/เวลา

รูปแบบผลลัพธ์ของ DateTimeUtil::toStr และ System.DateTime.GetDateTimeFormats คือ yyyy-mm-ddThh:mm:ss ในรูปแบบ 24 ชั่วโมง (ไม่มี AM หรือ PM ต่อท้าย) โดยมีศูนย์นำหน้า ตัวอย่างเช่น 20 กรกฎาคม 2550 เวลา 13:45 น. จะแสดงเป็น 2007-07-20T13:45:00. รูปแบบสตริงนี้เป็นมาตรฐานองค์กรมาตรฐานสากล (ISO)

รูปแบบสตริง ISO นี้ถูกป้อนลงใน DateTimeUtil::parse และ System.DateTime::Parse เพื่อแปลงสตริงเป็นประเภทวันที่/เวลา

ตัวอย่างการแปลงระหว่างวันที่/เวลากับสตริง

ตัวอย่างโค้ด X++ ต่อไปนี้แสดงวิธีการส่งผ่านสตริงที่เข้ากันได้ระหว่าง .NET และ X++ และแปลงเป็นตัวแปรวันที่/เวลา


เกี่ยวกับ "เคล็ดลับ QA"

W3C QA Tips เป็นเอกสารสั้นๆ ที่อธิบายเกร็ดความรู้ที่เป็นประโยชน์สำหรับนักพัฒนาหรือนักออกแบบเว็บ ซึ่งโฮสต์และจัดทำโดย Quality Assurance Interest Group ที่ W3C

แม้ว่าคำแนะนำต่างๆ จะได้รับการตรวจสอบอย่างรอบคอบโดยผู้เข้าร่วมกลุ่ม แต่ไม่ควรมองว่าเป็นอย่างอื่นนอกจากเกร็ดความรู้ และโดยเฉพาะอย่างยิ่ง ไม่ ข้อกำหนดทางเทคนิค W3C เชิงบรรทัดฐาน

เรียนรู้เพิ่มเติมเกี่ยวกับ Tips วิธีส่งไข่มุกแห่งปัญญาของคุณเอง และค้นหาเคล็ดลับ QA อื่นๆ ทั้งหมดในดัชนี Tips

ลิขสิทธิ์ &คัดลอก 1994-2006 W3C ® (MIT , ERCIM , Keio) สงวนลิขสิทธิ์ ความรับผิดของ W3C เครื่องหมายการค้า การใช้เอกสาร และกฎการอนุญาตให้ใช้สิทธิ์ซอฟต์แวร์ การโต้ตอบของคุณกับไซต์นี้เป็นไปตามคำชี้แจงสิทธิ์ส่วนบุคคลสาธารณะและของสมาชิกของเรา


คุณไม่สามารถรับสตริงว่างได้เนื่องจากคุณกำลังส่งคืนประเภทค่า DATE จาก ISNULL

ส่งกลับประเภทเดียวกับ check_expression หากระบุ NULL ตามตัวอักษรเป็น check_expression ส่งคืนประเภทข้อมูลของ replacement_value หากระบุ NULL ตามตัวอักษรเป็น check_expression และไม่ได้ระบุค่าทดแทน ให้ส่งคืน int

หากคุณกำลังตรวจสอบว่าค่าเป็น NULL หรือไม่ คุณไม่จำเป็นต้องแปลงเป็นวันที่ เว้นแต่ว่าคุณต้องการคืนค่าวันที่ (ซึ่งดูเหมือนคุณไม่ต้องการ)

วันที่เป็นโมฆะเป็นโมฆะ (ไม่มีค่า) ในทางกลับกัน สตริงว่างจะประเมินเป็น 0 ซึ่งใน SQL Server เป็นจำนวนเต็มโดยปริยายที่แสดงจำนวนวันตั้งแต่ 1900-01-01


ฟังก์ชันวันที่และเวลาของอิมพาลา

ประเภทข้อมูล Impala พื้นฐานสำหรับข้อมูลวันที่และเวลาคือ TIMESTAMP และ DATE

  • การตั้งค่านี้ปิดอยู่โดยค่าเริ่มต้น หมายความว่าฟังก์ชันต่างๆ เช่น FROM_UNIXTIME() และ UNIX_TIMESTAMP() จะพิจารณาค่าอินพุตเพื่อแสดงเขตเวลา UTC เสมอ
  • การตั้งค่ายังใช้เมื่อคุณ CAST() ค่า BIGINT เป็น TIMESTAMP หรือค่า TIMESTAMP เป็น BIGINT เมื่อเปิดใช้งานการตั้งค่านี้ ฟังก์ชันและการดำเนินการเหล่านี้จะแปลงเป็นและจากค่าที่แสดงเขตเวลาท้องถิ่น ดูประเภทข้อมูล TIMESTAMP สำหรับรายละเอียดเกี่ยวกับวิธีที่ Impala จัดการกับการพิจารณาเขตเวลาสำหรับประเภทข้อมูล TIMESTAMP

การอ้างอิงฟังก์ชัน:

Impala รองรับฟังก์ชันวันที่และเวลาต่อไปนี้:

  • ADD_MONTHS
  • เพิ่ม
  • วันที่ปัจจุบัน
  • CURRENT_TIMESTAMP
  • DATE_ADD
  • DATE_PART
  • DATE_SUB
  • DATE_TRUNC
  • DATEDIFF
  • วัน
  • DAYNAME
  • DAYOFWEEK
  • DAYOFYEAR
  • DAYS_ADD
  • DAYS_SUB
  • สารสกัด
  • FROM_TIMESTAMP
  • FROM_UNIXTIME
  • FROM_UTC_TIMESTAMP
  • ชั่วโมง
  • HOURS_ADD
  • HOURS_SUB
  • INT_MONTHS_BETWEEN
  • MICROSECONDS_ADD
  • MICROSECONDS_SUB
  • มิลลิวินาที
  • MILLISECONDS_ADD
  • MILLISECONDS_SUB
  • นาที
  • MINUTES_ADD
  • MINUTES_SUB
  • เดือน
  • MONTHNAME
  • MONTHS_ADD
  • MONTHS_BETWEEN
  • MONTHS_SUB
  • NANOSECONDS_ADD
  • NANOSECONDS_SUB
  • NEXT_DAY
  • ตอนนี้
  • ไตรมาส
  • SECOND
  • SECONDS_ADD
  • SECONDS_SUB
  • SUBDATE
  • เวลาของวัน
  • TIMESTAMP_CMP
  • TO_DATE
  • TO_TIMESTAMP
  • TO_UTC_TIMESTAMP
  • TRUNC
  • UNIX_TIMESTAMP
  • UTC_TIMESTAMP
  • WEEKOFYEAR
  • WEEKS_ADD
  • WEEKS_SUB
  • ปี
  • YEARS_ADD
  • YEARS_SUB

หมายเหตุการใช้งาน:

เช่นเดียวกับ MONTHS_ADD() มีให้ใน Impala 1.4 และสูงกว่า เพื่อความเข้ากันได้เมื่อพอร์ตโค้ดกับส่วนขยายของผู้จำหน่าย

เพิ่ม(ประทับเวลา / วันที่, INT / BIGINT วัน) วัตถุประสงค์: เพิ่มวันจนถึงปัจจุบันและส่งกลับค่าวันที่ใหม่

ค่าวันสามารถเป็นค่าลบได้ ซึ่งให้ผลลัพธ์เหมือนกับฟังก์ชัน SUBDATE()

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

ประเภทผลตอบแทน: DATE

CURRENT_TIMESTAMP() วัตถุประสงค์: นามแฝงสำหรับฟังก์ชัน NOW()

ประเภทผลตอบแทน: การประทับเวลา

DATE_ADD(TIMESTAMP / วันที่ DATE, INT / BIGINT วัน), DATE_ADD(วันที่ TIMESTAMP / DATE, interval_expression) วัตถุประสงค์: เพิ่มจำนวนวันที่ระบุในอาร์กิวเมนต์วันที่ ด้วยนิพจน์ INTERVAL เป็นอาร์กิวเมนต์ที่สอง คุณสามารถคำนวณค่าเดลต้าโดยใช้หน่วยอื่น เช่น สัปดาห์ ปี ชั่วโมง วินาที และอื่นๆ ดูรายละเอียดในประเภทข้อมูล TIMESTAMP

ตัวอย่างต่อไปนี้แสดงสัญกรณ์ชวเลขของนิพจน์ INTERVAL แทนที่จะระบุจำนวนวันที่แม่นยำ สัญกรณ์ INTERVAL ยังช่วยให้คุณทำงานกับหน่วยที่เล็กกว่าวันเดียวได้

เช่นเดียวกับฟังก์ชันวันที่/เวลาทั้งหมดที่จัดการกับเดือน date_add() จะจัดการวันที่ที่ไม่มีอยู่หลังสิ้นเดือนโดยการตั้งค่าวันที่เป็นวันสุดท้ายของเดือน ตัวอย่างต่อไปนี้แสดงให้เห็นว่าวันที่ไม่มีอยู่จริงวันที่ 31 เมษายนถูกทำให้เป็นมาตรฐานเป็นวันที่ 30 เมษายน:

  • 0 ถ้าวันที่ตรงกัน
  • 1 ถ้า date1 > date2
  • -1 ถ้า date1 < date2
  • NULL ถ้า date1 หรือ date2 เป็น NULL

ประเภทผลตอบแทน: INT

DATE_PART(ส่วน STRING, TIMESTAMP / วันที่ DATE) วัตถุประสงค์: คล้ายกับ EXTRACT() โดยกลับลำดับอาร์กิวเมนต์ รองรับหน่วยวันที่และเวลาเดียวกันกับ EXTRACT() เพื่อความเข้ากันได้กับโค้ด SQL ที่มีส่วนขยายผู้ขาย

ประเภทผลตอบแทน: BIGINT

DATE_SUB(วันที่เริ่มต้น TIMESTAMP, วัน INT), DATE_SUB(วันที่เริ่มต้น TIMESTAMP, interval_expression) วัตถุประสงค์: ลบจำนวนวันที่ระบุจากค่า TIMESTAMP ด้วยนิพจน์ INTERVAL เป็นอาร์กิวเมนต์ที่สอง คุณสามารถคำนวณค่าเดลต้าโดยใช้หน่วยอื่น เช่น สัปดาห์ ปี ชั่วโมง วินาที และอื่นๆ ดูรายละเอียดในประเภทข้อมูล TIMESTAMP

ตัวอย่างต่อไปนี้แสดงการใช้งานที่ง่ายที่สุด ในการลบจำนวนวันที่ระบุจากค่า TIMESTAMP:

ตัวอย่างต่อไปนี้แสดงสัญกรณ์ชวเลขของนิพจน์ INTERVAL แทนที่จะระบุจำนวนวันที่แม่นยำ สัญกรณ์ INTERVAL ยังช่วยให้คุณทำงานกับหน่วยที่เล็กกว่าวันเดียวได้

เช่นเดียวกับฟังก์ชันวันที่/เวลาทั้งหมดที่จัดการกับเดือน date_add() จะจัดการวันที่ที่ไม่มีอยู่หลังสิ้นเดือนโดยการตั้งค่าวันที่เป็นวันสุดท้ายของเดือน ตัวอย่างต่อไปนี้แสดงให้เห็นว่าวันที่ไม่มีอยู่จริงวันที่ 31 เมษายนถูกทำให้เป็นมาตรฐานเป็นวันที่ 30 เมษายน:

DATE_TRUNC(หน่วย STRING, TIMESTAMP / DATE ts) วัตถุประสงค์: ส่งคืนค่า ts ที่ตัดทอนไปยังหน่วยที่ระบุ

ข้อโต้แย้ง: อาร์กิวเมนต์ของหน่วยไม่คำนึงถึงขนาดตัวพิมพ์ สตริงอาร์กิวเมนต์นี้สามารถเป็นหนึ่งใน:

หน่วย รองรับ TIMESTAMP รองรับสำหรับ DATE
'ไมโครวินาที' ใช่ ไม่
'มิลลิวินาที' ใช่ ไม่
'วินาที' ใช่ ไม่
'นาที' ใช่ ไม่
'ชั่วโมง' ใช่ ไม่
'วัน' ใช่ ใช่
'สัปดาห์' ใช่ ใช่
'เดือน' ใช่ ใช่
'ปี' ใช่ ใช่
'ทศวรรษ' ใช่ ใช่
'ศตวรรษ' ใช่ ใช่
'สหัสวรรษ' ใช่ ใช่

เพิ่มใน: อิมพาลา 2.11.0

หมายเหตุการใช้งาน:

แม้ว่าฟังก์ชันนี้จะคล้ายกับการเรียก TRUNC() ด้วยอาร์กิวเมนต์ TIMESTAMP หรือ DATE ลำดับของอาร์กิวเมนต์และหน่วยที่รู้จักจะแตกต่างกันระหว่าง TRUNC() และ DATE_TRUNC() ดังนั้น ฟังก์ชันเหล่านี้จึงใช้แทนกันไม่ได้

ฟังก์ชันนี้มักใช้ในแบบสอบถาม GROUP BY เพื่อรวมผลลัพธ์จากชั่วโมง วัน สัปดาห์ เดือน ไตรมาส และอื่นๆ เดียวกัน คุณยังสามารถใช้ฟังก์ชันนี้ใน INSERT SELECT ลงในตารางที่แบ่งพาร์ติชั่นเพื่อแบ่งค่า TIMESTAMP หรือ DATE ออกเป็นพาร์ติชั่นที่ถูกต้อง

  • TIMESTAMP ถ้าอาร์กิวเมนต์ที่สอง ts คือ TIMESTAMP
  • DATE ถ้าอาร์กิวเมนต์ที่สอง ts คือ DATE

DATE_TRUNC('HOUR', NOW()) ส่งคืน 2017-12-05 13:00:00

DATE_TRUNC('MILLENNIUM', DATE'2019-08-02') ส่งคืน 2001-01-01

DATEDIFF(การประทับเวลา / วันที่สิ้นสุดวันที่, การประทับเวลา / วันที่เริ่มต้น) วัตถุประสงค์: ส่งกลับจำนวนวันจาก startdate ถึง enddate

หาก enddate > startdate ค่าที่ส่งคืนจะเป็นค่าบวก

ถ้า enddate < startdate ค่าที่ส่งคืนจะเป็นค่าลบ

ถ้า enddate = startdate ค่าส่งกลับเป็นศูนย์

ประเภทผลตอบแทน: INT

หมายเหตุการใช้งาน:

ส่วนเวลาของค่าวันที่สิ้นสุดและวันที่เริ่มต้นจะถูกละเว้น ตัวอย่างเช่น 23:59 น. ของวันหนึ่งและ 00:01 น. ของวันถัดไปแสดงถึง DATEDIFF() ของ -1 เนื่องจากค่าวันที่/เวลาแสดงถึงวันที่ต่างกัน แม้ว่าค่า TIMESTAMP จะต่างกันเพียง 2 นาที

DAY(TIMESTAMP / DATE date), DAYOFMONTH(TIMESTAMP / DATE date) วัตถุประสงค์: ส่งกลับค่าวันจากอาร์กิวเมนต์วันที่ ค่านี้แทนวันของเดือน ดังนั้นจึงอยู่ในช่วง 1-31 หรือน้อยกว่าสำหรับเดือนที่ไม่มี 31 วัน

ส่งกลับค่า NULL สำหรับวันที่ไม่มีอยู่ เช่น 30 ก.พ. หรือสตริงวันที่ผิดรูปแบบ เช่น '1999-02-013' .

ประเภทผลตอบแทน: INT

DAYNAME(ประทับเวลา/วันที่วันที่) วัตถุประสงค์: ส่งกลับชื่อวันของอาร์กิวเมนต์วันที่ ช่วงของค่าที่ส่งคืนคือ 'วันอาทิตย์' ถึง 'วันเสาร์' ใช้ในการสืบค้นข้อมูลที่สร้างรายงาน เป็นทางเลือกแทนการเรียก DAYOFWEEK() และเปลี่ยนค่าส่งคืนที่เป็นตัวเลขนั้นเป็นสตริงโดยใช้นิพจน์ CASE

ประเภทผลตอบแทน: STRING

DAYOFWEEK(ประทับเวลา / วันที่) วัตถุประสงค์: ส่งกลับฟิลด์วันของการโต้แย้งวันที่ ซึ่งสอดคล้องกับวันในสัปดาห์ ช่วงของค่าที่ส่งคืนคือ 1 (วันอาทิตย์) ถึง 7 (วันเสาร์)

ประเภทผลตอบแทน: INT

DAYOFYEAR(ประทับเวลา / วันที่) วัตถุประสงค์: ส่งกลับฟิลด์วันจากอาร์กิวเมนต์วันที่ซึ่งสอดคล้องกับวันของปี ช่วงของค่าที่ส่งคืนคือ 1 (1 มกราคม 1 ถึง 366 (31 ธันวาคมของปีอธิกสุรทิน)

ประเภทผลตอบแทน: INT

DAYS_ADD(TIMESTAMP / วันที่ DATE, INT / BIGINT วัน) วัตถุประสงค์: ส่งคืนค่าที่มีจำนวนวันที่เพิ่มถึงวันที่

ข้อโต้แย้ง: ค่าอาร์กิวเมนต์หน่วยไม่คำนึงถึงขนาดตัวพิมพ์ สตริงหน่วยสามารถเป็นหนึ่งใน:

หน่วย รองรับ TIMESTAMP ts รองรับวันที่ ts
'ยุค' ใช่ ไม่
'มิลลิวินาที' ใช่ ไม่
'วินาที' ใช่ ไม่
'นาที' ใช่ ไม่
'ชั่วโมง' ใช่ ไม่
'วัน' ใช่ ใช่
'เดือน' ใช่ ใช่
'ไตรมาส' ใช่ ใช่
'ปี' ใช่ ใช่

หมายเหตุการใช้งาน:

โดยทั่วไปจะใช้ในแบบสอบถาม GROUP BY เพื่อจัดเรียงผลลัพธ์ตามชั่วโมง วัน เดือน และอื่นๆ คุณยังสามารถใช้ฟังก์ชันนี้ใน INSERT คำสั่ง SELECT เพื่อแทรกลงในตารางที่แบ่งพาร์ติชันเพื่อแยกค่า TIMESTAMP ออกเป็นส่วนๆ หากตารางที่แบ่งพาร์ติชันมีคอลัมน์คีย์ของพาร์ติชันที่แยกจากกันซึ่งแทนปี เดือน วัน และอื่นๆ หากคุณต้องการหารด้วยหน่วยเวลาที่ซับซ้อนมากขึ้น เช่น ตามสัปดาห์หรือตามไตรมาส ให้ใช้ฟังก์ชัน TRUNC() แทน

ประเภทผลตอบแทน: BIGINT

EXTRACT(DAY FROM DATE'2019-08-17') คืนค่า 17

หากคุณระบุ 'MILLISECOND' สำหรับอาร์กิวเมนต์หน่วย ฟังก์ชันจะส่งกลับส่วนประกอบวินาทีและส่วนประกอบมิลลิวินาที

EXTRACT(CAST('2006-05-12 18:27:28.123456789' AS TIMESTAMP), 'MILLISECOND') ส่งคืน 28123

FROM_TIMESTAMP(วันที่เวลา TIMESTAMP รูปแบบ STRING), FROM_TIMESTAMP(เวลาวันที่STRING รูปแบบSTRING) วัตถุประสงค์: แปลงค่า TIMESTAMP เป็นสตริงที่แสดงค่าเดียวกัน

ประเภทผลตอบแทน: STRING

หมายเหตุการใช้งาน:

ฟังก์ชัน FROM_TIMESTAMP() ให้วิธีที่ยืดหยุ่นในการแปลงค่า TIMESTAMP เป็นรูปแบบสตริงที่กำหนดเองเพื่อวัตถุประสงค์ในการรายงาน

เนื่องจาก Impala แปลงค่าสตริงโดยปริยายเป็น TIMESTAMP คุณจึงสามารถส่งค่าวันที่/เวลาที่แสดงเป็นสตริง (ในรูปแบบมาตรฐาน yyyy-MM-dd HH:mm:ss.SSS) ไปยังฟังก์ชันนี้ได้ ผลลัพธ์คือสตริงที่ใช้อักขระตัวคั่น ลำดับฟิลด์ ชื่อเดือนที่สะกด หรือรูปแบบอื่นๆ ของการแสดงสตริงวันที่/เวลา

โทเค็นที่อนุญาตสำหรับสตริงรูปแบบจะเหมือนกับฟังก์ชัน FROM_UNIXTIME()

FROM_UNIXTIME(unixtime ใหญ่ [ รูปแบบ STRING]) วัตถุประสงค์: แปลงจำนวนวินาทีจากยุค Unix เป็นเวลาที่ระบุเป็นสตริงในเขตเวลาท้องถิ่น

ประเภทผลตอบแทน: STRING

สตริงรูปแบบสนับสนุนชุดย่อยต่อไปนี้ของ Java SimpleDateFormat

รูปแบบ คำอธิบาย
y ปี
เอ็ม เดือน
d วัน
โฮ ชั่วโมง
นาที
ที่สอง
เศษส่วนวินาที
+/-hh:mm ออฟเซ็ตโซนเวลา
+/-อืมม ออฟเซ็ตโซนเวลา
+/-ฮะ ออฟเซ็ตโซนเวลา

กฎต่อไปนี้ใช้กับสตริงรูปแบบ:

  • สตริงรูปแบบคำนึงถึงขนาดตัวพิมพ์
  • ฟิลด์ทั้งหมดมีความยาวผันแปรได้ ดังนั้นต้องใช้ตัวคั่นเพื่อระบุขอบเขตของฟิลด์ ยกเว้นค่าโซนเวลา
  • รูปแบบออฟเซ็ตโซนเวลาต้องอยู่ที่ส่วนท้ายของสตริงรูปแบบ
  • Formatting character groups can appear in any order along with any separators except for the time zone offset. ตัวอย่างเช่น:
    • yyyy/MM/dd
    • dd-MMM-yy
    • (dd)(MM)(yyyy) HH:mm:ss
    • yyyy-MM-dd HH:mm:ss+hh:mm

    In Impala 1.3 and later, you can switch the order of elements, use alternative separator characters, and use a different number of placeholders for each unit. Adding more instances of y , d , H , and so on produces output strings zero-padded to the requested number of characters. The exception is M for months, where M produces a non-padded value such as 3 , MM produces a zero-padded value such as 03 , MMM produces an abbreviated month name such as Mar , and sequences of 4 or more M are not allowed.

    A date string including all fields could be 'yyyy-MM-dd HH:mm:ss.SSSSSS' , 'dd/MM/yyyy HH:mm:ss.SSSSSS' , 'MMM dd, yyyy HH.mm.ss (SSSSSS)' or other combinations of placeholders and separator characters.

    In Impala 2.2.0 and higher, built-in functions that accept or return integers representing TIMESTAMP values use the BIGINT type for parameters and return values, rather than INT . This change lets the date and time functions avoid an overflow error that would otherwise occur on January 19th, 2038 (known as the "Year 2038 problem" or "Y2K38 problem" ). This change affects the FROM_UNIXTIME() and UNIX_TIMESTAMP() functions. You might need to change application code that interacts with these functions, change the types of columns that store the return values, or add CAST() calls to SQL statements that call these functions.

    Usage notes:

    The way this function deals with time zones when converting to or from TIMESTAMP values is affected by the ‑‑use_local_tz_for_unix_timestamp_conversions startup flag for the impalad daemon. See TIMESTAMP Data Type for details about how Impala handles time zone considerations for the TIMESTAMP data type.

    FROM_UTC_TIMESTAMP(TIMESTAMP ts, STRING timezone) Purpose: Converts a specified UTC timestamp value into the appropriate value for a specified time zone.

    ประเภทผลตอบแทน: TIMESTAMP

    Usage notes: Often used to translate UTC time zone data stored in a table back to the local date and time for reporting. The opposite of the TO_UTC_TIMESTAMP() function.

    To determine the time zone of the server you are connected to, in Impala 2.3 and higher you can call the timeofday() function, which includes the time zone specifier in its return value. Remember that with cloud computing, the server you interact with might be in a different time zone than you are, or different sessions might connect to servers in different time zones, or a cluster might include servers in more than one time zone.

    See discussion of time zones in TIMESTAMP Data Type for information about using this function for conversions between the local time zone and UTC.

    HOUR(TIMESTAMP ts) Purpose: Returns the hour field from a TIMESTAMP field.

    ประเภทผลตอบแทน: INT

    HOURS_ADD(TIMESTAMP date, INT hours), HOURS_ADD(TIMESTAMP date, BIGINT hours) Purpose: Returns the specified date and time plus some number of hours.

    ประเภทผลตอบแทน: TIMESTAMP

    HOURS_SUB(TIMESTAMP date, INT hours), HOURS_SUB(TIMESTAMP date, BIGINT hours) Purpose: Returns the specified date and time minus some number of hours.

    ประเภทผลตอบแทน: TIMESTAMP

    INT_MONTHS_BETWEEN(TIMESTAMP / DATE enddate, TIMESTAMP / DATE startdate) Purpose: Returns the number of months from startdate to enddate , representing only the full months that passed.

    ประเภทผลตอบแทน: INT

    Added in: Impala 2.3.0

    Usage notes:

    Typically used in business contexts, for example to determine whether a specified number of months have passed or whether some end-of-month deadline was reached.

    The method of determining the number of elapsed months includes some special handling of months with different numbers of days that creates edge cases for dates between the 28th and 31st days of certain months. See MONTHS_BETWEEN() for details. The INT_MONTHS_BETWEEN() result is essentially the FLOOR() of the MONTHS_BETWEEN() result.

    If either value is NULL , which could happen for example when converting a nonexistent date string such as '2015-02-29' to a TIMESTAMP , the result is also NULL .

    If the first argument represents an earlier time than the second argument, the result is negative.

    LAST_DAY(TIMESTAMP / DATE ts) Purpose: Returns the beginning of the last calendar day in the same month of ts .

    • Returns TIMESTAMP if ts is of the TIMESTAMP type.
    • Returns DATE if ts is of the DATE type.

    Added in: Impala 2.9.0

    Usage notes:

    If the input argument does not represent a valid Impala TIMESTAMP including both date and time portions, the function returns NULL . For example, if the input argument is a string that cannot be implicitly cast to TIMESTAMP , does not include a date portion, or is out of the allowed range for Impala TIMESTAMP values, the function returns NULL .

    MICROSECONDS_ADD(TIMESTAMP date, INT microseconds), MICROSECONDS_ADD(TIMESTAMP date, BIGINT microseconds) Purpose: Returns the specified date and time plus some number of microseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    MICROSECONDS_SUB(TIMESTAMP date, INT microseconds), MICROSECONDS_SUB(TIMESTAMP date, BIGINT microseconds) Purpose: Returns the specified date and time minus some number of microseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    MILLISECOND(TIMESTAMP ts) Purpose: Returns the millisecond portion of a TIMESTAMP value.

    ประเภทผลตอบแทน: INT

    Added in: Impala 2.5.0

    Usage notes:

    The millisecond value is truncated, not rounded, if the TIMESTAMP value contains more than 3 significant digits to the right of the decimal point.

    MILLISECONDS_ADD(TIMESTAMP date, INT milliseconds), MILLISECONDS_ADD(TIMESTAMP date, BIGINT milliseconds) Purpose: Returns the specified date and time plus some number of milliseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    MILLISECONDS_SUB(TIMESTAMP date, INT milliseconds), MILLISECONDS_SUB(TIMESTAMP date, BIGINT milliseconds) Purpose: Returns the specified date and time minus some number of milliseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    MINUTE(TIMESTAMP date) Purpose: Returns the minute field from a TIMESTAMP value.

    ประเภทผลตอบแทน: INT

    MINUTES_ADD(TIMESTAMP date, INT minutes), MINUTES_ADD(TIMESTAMP date, BIGINT minutes) Purpose: Returns the specified date and time plus some number of minutes.

    ประเภทผลตอบแทน: TIMESTAMP

    MINUTES_SUB(TIMESTAMP date, INT minutes), MINUTES_SUB(TIMESTAMP date, BIGINT minutes) Purpose: Returns the specified date and time minus some number of minutes.

    ประเภทผลตอบแทน: TIMESTAMP

    MONTH(TIMESTAMP / DATE date) Purpose: Returns the month field, represented as an integer, from the date argument.

    ประเภทผลตอบแทน: INT

    MONTHNAME(TIMESTAMP / DATE date) Purpose: Returns the month name of the date argument.

    ประเภทผลตอบแทน: STRING

    MONTHS_ADD(TIMESTAMP / DATE date, INT / BIGINT months) Purpose: Returns the value with the number of months added to date .

    Usage notes:

    If date is the last day of a month, the return date will fall on the last day of the target month, e.g. MONTHS_ADD(DATE'2019-01-31', 1) returns DATE'2019-02-28' .

    MONTHS_BETWEEN(TIMESTAMP / DATE enddate, TIMESTAMP / DATE startdate) Purpose: Returns the number of months from startdate to enddate . This result can include a fractional part representing extra days in addition to the full months between the dates. The fractional component is computed by dividing the difference in days by 31 (regardless of the month).

    ประเภทผลตอบแทน: DOUBLE

    Added in: Impala 2.3.0

    Usage notes:

    Typically used in business contexts, for example to determine whether a specified number of months have passed or whether some end-of-month deadline was reached.

    If the only consideration is the number of full months and any fractional value is not significant, use INT_MONTHS_BETWEEN() instead.

    The method of determining the number of elapsed months includes some special handling of months with different numbers of days that creates edge cases for dates between the 28th and 31st days of certain months.

    If either value is NULL , which could happen for example when converting a nonexistent date string such as '2015-02-29' to a TIMESTAMP , the result is also NULL .

    If the first argument represents an earlier time than the second argument, the result is negative.

    The time portion of the input arguements are ignored.

    MONTHS_SUB(TIMESTAMP / DATE date, INT / BIGINT months) Purpose: Returns the value with the number of months subtracted from date .

    Usage notes:

    If date is the last day of a month, the return date will fall on the last day of the target month, e.g. MONTHS_SUB(DATE'2019-02-28', 1) returns DATE'2019-01-31' .

    NANOSECONDS_ADD(TIMESTAMP date, INT nanoseconds), NANOSECONDS_ADD(TIMESTAMP date, BIGINT nanoseconds) Purpose: Returns the specified date and time plus some number of nanoseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    Kudu considerations:

    The nanosecond portion of an Impala TIMESTAMP value is rounded to the nearest microsecond when that value is stored in a Kudu table.

    NANOSECONDS_SUB(TIMESTAMP date, INT nanoseconds), NANOSECONDS_SUB(TIMESTAMP date, BIGINT nanoseconds) Purpose: Returns the specified date and time minus some number of nanoseconds.

    ประเภทผลตอบแทน: TIMESTAMP

    Kudu considerations:

    The nanosecond portion of an Impala TIMESTAMP value is rounded to the nearest microsecond when that value is stored in a Kudu table.

    NEXT_DAY(TIMESTAMP / DATE date, STRING weekday) Purpose: Returns the date of the weekday that follows the specified date .

    Argument: The weekday is not case-sensitive.

    The following values are accepted for weekday : "Sunday" / "Sun" , "Monday" / "Mon" , "Tuesday" / "Tue" , "Wednesday" / "Wed" , "Thursday" / "Thu" , "Friday" / "Fri" , "Saturday" / "Sat"

    • Returns TIMESTAMP if date is of the TIMESTAMP type.
    • Returns DATE if date is of the DATE type.

    NEXT_DAY('2013-12-25','Saturday') returns '2013-12-28 00:00:00' which is the first Saturday after December 25, 2013.

    NOW() Purpose: Returns the current date and time (in the local time zone) as a TIMESTAMP value.

    ประเภทผลตอบแทน: TIMESTAMP

    Usage notes:

    To find a date/time value in the future or the past relative to the current date and time, add or subtract an INTERVAL expression to the return value of NOW() . See TIMESTAMP Data Type for examples.

    To produce a TIMESTAMP representing the current date and time that can be shared or stored without interoperability problems due to time zone differences, use the TO_UTC_TIMESTAMP() function and specify the time zone of the server. When TIMESTAMP data is stored in UTC form, any application that queries those values can convert them to the appropriate local time zone by calling the inverse function, FROM_UTC_TIMESTAMP() .

    To determine the time zone of the server you are connected to, in Impala 2.3 and higher you can call the timeofday() function, which includes the time zone specifier in its return value. Remember that with cloud computing, the server you interact with might be in a different time zone than you are, or different sessions might connect to servers in different time zones, or a cluster might include servers in more than one time zone.

    Any references to the NOW() function are evaluated at the start of a query. All calls to NOW() within the same query return the same value, and the value does not depend on how long the query takes.

    QUARTER(TIMESTAMP / DATE date) Purpose: Returns the quarter in the input date argument as an integer value, 1, 2, 3, or 4, where 1 represents January 1 through March 31.

    ประเภทผลตอบแทน: INT

    SECOND(TIMESTAMP date) Purpose: Returns the second field from a TIMESTAMP value.

    ประเภทผลตอบแทน: INT

    SECONDS_ADD(TIMESTAMP date, INT seconds), SECONDS_ADD(TIMESTAMP date, BIGINT seconds) Purpose: Returns the specified date and time plus some number of seconds.

    ประเภทผลตอบแทน: TIMESTAMP

    SECONDS_SUB(TIMESTAMP date, INT seconds), SECONDS_SUB(TIMESTAMP date, BIGINT seconds) Purpose: Returns the specified date and time minus some number of seconds.

    ประเภทผลตอบแทน: TIMESTAMP

    SUBDATE(TIMESTAMP / DATE date, INT / BIGINT days) Purpose: Subtracts days from date and returns the new date value.

    The days value can be negative, which gives the same result as the ADDDATE() function.

    ประเภทผลตอบแทน: STRING

    Added in: Impala 2.3.0

    Usage notes: The result value represents similar information as the now() function, only as a STRING type and with somewhat different formatting. For example, the day of the week and the time zone identifier are included. This function is intended primarily for compatibility with SQL code from other systems that also have a timeofday() function. Prefer to use now() if practical for any new Impala code.

    If the first argument represents a later point in time than the second argument, the result is 1.

    If the first argument represents an earlier point in time than the second argument, the result is -1.

    If the first and second arguments represent identical points in time, the result is 0.

    If either argument is NULL , the result is NULL .

    ประเภทผลตอบแทน: INT (either -1, 0, 1, or NULL )

    Added in: Impala 2.3.0

    Usage notes:

    Usage notes: A comparison function for TIMESTAMP values that only tests whether the date and time increases, decreases, or stays the same. Similar to the SIGN() function for numeric values.

    TO_DATE(TIMESTAMP ts) Purpose: Returns a string representation of the date field from the ts argument.

    ประเภทผลตอบแทน: STRING

    TO_TIMESTAMP(BIGINT unixtime), TO_TIMESTAMP(STRING date, STRING pattern) Purpose: Converts an integer or string representing a date/time value into the corresponding TIMESTAMP value.

    ประเภทผลตอบแทน: TIMESTAMP

    Added in: Impala 2.3.0

    Usage notes:

    An integer argument represents the number of seconds past the epoch (midnight on January 1, 1970). It is the converse of the UNIX_TIMESTAMP() function, which produces a BIGINT representing the number of seconds past the epoch.

    A string argument, plus another string argument representing the pattern, turns an arbitrary string representation of a date and time into a true TIMESTAMP value. The ability to parse many kinds of date and time formats allows you to deal with temporal data from diverse sources, and if desired to convert to efficient TIMESTAMP values during your ETL process. Using TIMESTAMP directly in queries and expressions lets you perform date and time calculations without the overhead of extra function calls and conversions each time you reference the applicable columns.

    The following examples demonstrate how to convert an arbitrary string representation to TIMESTAMP based on a pattern string:

    The following examples show how to convert a BIGINT representing seconds past epoch into a TIMESTAMP value:

    TO_UTC_TIMESTAMP(TIMESTAMP ts, STRING timezone) Purpose: Converts a specified timestamp value in a specified time zone into the corresponding value for the UTC time zone.

    ประเภทผลตอบแทน: TIMESTAMP

    Usage notes:

    Often used in combination with the now() function, to translate local date and time values to the UTC time zone for consistent representation on disk. The opposite of the FROM_UTC_TIMESTAMP() function.

    See discussion of time zones in TIMESTAMP Data Type for information about using this function for conversions between the local time zone and UTC.

    The simplest use of this function is to turn a local date/time value to one with the standardized UTC time zone. Because the time zone specifier is not saved as part of the Impala TIMESTAMP value, all applications that refer to such data must agree in advance which time zone the values represent. If different parts of the ETL cycle, or different instances of the application, occur in different time zones, the ideal reference point is to convert all TIMESTAMP values to UTC for storage.

    Once a value is converted to the UTC time zone by TO_UTC_TIMESTAMP() , it can be converted back to the local time zone with FROM_UTC_TIMESTAMP() . You can combine these functions using different time zone identifiers to convert a TIMESTAMP between any two time zones. This example starts with a TIMESTAMP value representing Pacific Daylight Time, converts it to UTC, and converts it to the equivalent value in Eastern Daylight Time.

    TRUNC(TIMESTAMP / DATE ts, STRING unit) Purpose: Returns the ts truncated to the unit specified.

    Argument: The unit argument is not case-sensitive. This argument string can be one of:


    5 Answers 5

    I checked your profile and saw that you are in the UK. If your sql server is set to use the dateformat dmy then that explains your issue. Without using the 'T' instead of the space in the datetime string, Sql Server won't recognize it as ISO8601 format.

    Querying using dates and/or datetimes can be tricky, to make sure you are getting what you are looking for I recommend reading:

    edit: to clarify the out of range value in your error message would be from interpreting the month as 30 and the day as 11.

    I do not understand why the data is being converted from varchar to datetime when 'Created' is set to datetime

    The literals you are providing for comparison to the Created column are strings. To compare those literals with the datetime column, SQL Server attempts to convert the strings to datetime types, according to the rules of data type precedence. Without explicit information about the format of the strings, SQL Server follows its convoluted rules for interpreting strings as datetimes.

    In my view, the neatest way to avoid these types of issues is to be explicit about types. SQL Server provides the CAST and CONVERT functions for this purpose. When working with strings and date/time types, CONVERT is to be preferred because it provides a style parameter to explicitly define the string format.

    The question uses strings in ODBC canonical (with milliseconds) format (style 121). Being explicit about the data type and string style results in the following:

    That said, there are good reasons (as Aaron points out in his answer) to use a half-open range instead of BETWEEN (I use style 120 below just for variety):

    Being explicit about types is a very good habit to get into, particularly when dealing with dates and times.


    ดูวิดีโอ: Пространственная привязка растра jpg в ArcGIS ArcMap