ช่วยดูโค้ดคำนวณเวลา สอนผมหน่อยครับ เขาคิดอย่างไร อยากเพิ่มเติมแต่คิดไม่ได้
ผมเคยเขียนเอาไว้นานแล้วและบางทีมันอาจจะช่วยคุณได้ครับ (พ.ศ. 2552 โน้น)
(ผมรู้ซึ้งถึงลมหายใจสุดท้ายของคน ว่ามันเป็นอย่างไร? )
วันเวลายังคงอยู่ ความรู้สึกดีฯยังคงอยู่ ความรู้สึกแย่ฯ ก็ยังคงอยู่ ถ้ามีโอกาสเราท่านทั้งหลายจะทำหรือไม่ (ตะกอนจะเป็นคนบอกเราเอง)
อุ่นใดฯโลกนี้ไม่มีเทียบเทียม อุ่นอกอ้อมใจอุ่นรักพ่อแม่ประคอง
รักเจ้าจึงปลูก...
วันเวลาหมุนเปลี่ยนเวียนไป สุขสดใสไม่เคยเดินตาม ...
มันเวลาหมุนเปลี่ยนโมงยาม ต่างทับถมความทุกข์ระทม...
อันนี้คือเรื่องจริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง จริง ไม่ได้ปรุงแต่ง
และไม่ได้อิงกระแสอะไร
คุณพ่อของผมเสียไปนานแล้ว และคุณแม่ของผมพึ่งเสียไปไม่นานมานี้เอง ถ้ามีโอกาสผมก็จะเข้าวัดทำบุญอุทิศส่วนกุศลให้ท่านมิได้ขาด
ถามว่าผมทำถูกต้องไหม? ตอนท่านทั้งสองยังมีชีวิตผมเคยทำอย่างนี้หรือไม่? ไม่ ไม่ ไม่เลย คิดถึงแต่ความสุขของตัวเองมันหลัก ท่านจะหิวหรือท่านจะอิ่มไม่เคยรู้หรอก
ผมยังจำได้คืนสุดท้ายที่คุณแม่ของผมจากโลกนี้ไป (ประมาณเที่ยงคืน) พี่น้องของผมทุกคนอยู่กันพร้อมหน้า และก่อนที่ลมหายใจสุดท้ายของท่านแผ่วและหายไป
(ยังจะแบ่งความหิวและปันความอิ่มให้ลูกฯอีก) น้ำตาท่านไหล/ถามและบอกว่า กินข้าวมาหรือยัง? ... เสียดายแม่เกิดมาจน แม่อยากจะแบ่งปันทุกสิ่งทุกอย่างบนโลกใบนี้ ให้ลูกของแม่ทุกฯคน
ผมรู้ซึ้งถึงลมหายใจสุดท้ายของคน ว่ามันเป็นอย่างไร?
หากท่านทั้งหลายยังมีโอกาสก็อย่าปล่อยให้มันหลุดลอยไป และให้มันเป็นตะกอนเกาะกินใจ เหมือนดังตัวของกระผม...
มาดูเรื่องและพอมีสาระกันบ้าง (ชีวิตคนเรามันก็เป็นเช่นนี้เอย จริงบ้าง โกหกบ้าง ดีบ้าง เลวประจำ ปะปนกันไป ไม่มีอะไรจีรังยั่งยืน ฟ้าอยู่ค้ำคนคนไม่อยู่ค้ำฟ้า)
Database ของค่ายไหน มันก็เป็นแค่ Cursor เท่านั้นเอง ไม่ได้ยิ่งใหญ่มาจากไหนหรอก ยกเว้นเราจะคิดเป็นอย่างอื่น (เคยผ่านมาหมดแล้ว)
(คุณอังคารเคยกล่าวเอาไว้ว่า ไอ้หนุ่มเอ้ย ภาชนะที่มันคว่ำอยู่ ต่อให้ฝนตกเป็นร้อยห่า มันก็ไม่มีทางเต็มหรอก เออ มันจริงแฮะ)
ผมจะมากระเทาะเปลือกของ วันที่ ให้ทุกท่านดู VFP/? --> ORACLE /SQL Server/MySQL/? แบบให้เห็นเนื้อในของมัน
และน้อยคนนักที่จะกล่าวถึงมัน?
ทุกตัวอักษรในที่นี้ เป็นตัวละครตัวหนึ่งในเรื่องสั้น "หยาดน้ำค้างคือน้ำตาของเวลา"
โลดแล่นไปตามจังหวะของเวลา โชคและวาสนา อันจะไม่กลับหลัง
59 วินาที --> เข้าสู่ เที่ยงคืน ออกจาก--> 1 วินาที (เป็นอย่างนี้เสมอ)
พล่ามตามความเคยชิน
วันเวลาไม่เคยหยุด ดอกเบี้ยในธนาคารก็ไม่มี วันหยุด ไม่มีวันหลับไหล (เราทั่นทั้งหลายยังพอมีวันหยุดบ้าง แล้วแต่จะเรียก)
จากบันทัดทีสองข้างบน จะเห็นว่ามันเป็นคนละวันกัน ถึงแม้ว่าจะต่างกันแค่เสี้ยววินาที แต่สำหรับธุรกรรมบางอย่างนั่นหมายถึง
มูลค่าที่จะได้มาหรือสูญเสียไป (1, 2, 3, ..., เจ้า/เจ๊ง หลายล้านบาท) และผลพวงที่จะตามมาก็อย่างที่เห็นกันอยู่เหมือนทุกวันนี้ (มหาลัยมหาหลอก เด็กบ้านนอก นามสกุล โคกกระดอ ก ไม่มีทางเป็นท่านทูตได้)
Windows / ORACLE / SQL Server /??? มันมาจากประเทศ USA (เกินคืบ หรือท่านคิดว่าไม่ใช่)
เพราะฉะนั้นรูปแบบวันที่มาตรฐาน (ของฝรั่งเขา) น่าจะอ้างอิงได้สมบูรณ์และน่าเชื่อถือกว่า พ.ศ. ๒๕๔๓ (ประเทศไหนมันก็ ชาตินิยม กันทั้งนั้น
และผมได้ยินประโยคนี้บ่อยมาก คนไทย คิดเก่ง ทำเก่ง แก้ปัญหาเก่ง ไม่แพ้ชาติใดในโลก แต่ผมมีความรู้สึกแปลกฯ เมื่อได้ยิน/ฟังประโยคนี้)
ข้อตกลงร่วมกัน
1. รูปแบบวันที่ YYYY-MM-DD /ปี้ปี้ปี้ปี้-เดือนเดือน-วันวัน แบบ ค.ศ. เช่น 2000-02-29 และควรจะอ้างอิง วันเวลาที่มาจากแหล่งที่เดียวกัน (มาจาก Server) เป็นต้น
2. Dummy แปลว่า กะล่อน และผมจะใช้คำว่า Dual เป็นตัวแทน
3. ใน VFP ผมสร้าง Cursor และตั้งชื่อมันว่า Dual และมีโครงสร้าง/ข้อมูลดังนี้ (ไม่มีอะไรเป็นพิเศษ มันกะล่อน ไม่เสียชาติเกิด)
Create Cursor Dual ( _Code C (1) )
Insert into Dual ( _Code ) Values ( '9' )
4. Table TestDate เป็นตัวละครและมีโครงสร้าง/ข้อมูลดังนี้
Create Table TestDate ( YourName C(10) , Birthday DT null )
Insert into TestDate (Yourname , Birthday) Values ( 'นายก' , '2000-02-29')
Insert into TestDate (Yourname , Birthday) Values ( 'นายข' , '2000-05-01')
Insert into TestDate (Yourname , Birthday) Values ( 'นายค' , '2000-12-31')
จะได้ข้อมูลดังนี้ (รูปแบบการแสดงผล ขึ้นอยู่กับ Windows Regional หรือ VFP --> Tool --> Options)
---------------------------------------------
Youname Birthday
---------------------------------------------
นายก 29/02/2543
นายข 01/05/2543
นายค 31/12/2543
5. กรณีที่เป็น null ให้ใช้ (null) แทน เช่น
- Update TestDate Set Birthday = (null) Where Yourname = 'นายก'
- Insert into TestDate (Yourname , Birthday) Values ( 'นายง', (null) )
6. ในโปรแกรมจะเป็นอย่างไรผมไม่สนใจ รูปแบบ ไม่สนใจอะไรทั้งนั้น แต่เมื่อไหร่ที่เริ่มติดต่อกับ Database มันจะต้องเป็นอย่างนี้เท่านั้น YYYY-MM-DD และเป็น ค.ศ. เท่านั้น เช่น
- Select * From TestDate Where Birthday = '2000-05-01' อย่างนี้ใช้ได้
- Select * From TestDate Where Birthday = '2543-05-01' อย่างนี้ใช้ไม่ได้ ไม่ควรทำเป็นอย่างยิ่ง
- Update TestDate Set Birthday = '2009-01-01' Where Birthday = '2000-12-31' อย่างนี้ใช้ได้
- Update TestDate Set Birthday = '2009-01-01' Where Birthday = '2543-12-31' อย่างนี้ใช้ไม่ได้ ไม่ควรทำเป็นอย่างยิ่ง
คำสั่ง SQL มันมาตรฐาน ก็จริงแต่ก็มีข้อแตกต่างกันบ้างพอสมควร (อยู่ข้างไหน)
เช่น Select * From Where เป็นต้น
(แต่สำหรับผม อยู่ข้างไหนมันก็ไม่ทำให้ผมจนลงหรอก /รวยขึ้น)
เมื่อเราต้องการวันเวลาจาก Server
SQL Server Select GetDate() อย่างนี้ได้ เธอไม่ต้องการ From (Dual ไม่มีใน SQL Server)
ORACLE Select SysDate อย่างนี้ไม่ได้ เธอต้องการ From แต่ถ้าเขียนอย่างนี้ Select Sysdate From Dual อย่างนี้ได้
(Dual เป็นคำเฉพาะของ ORACLE หมายถึง กะล่อน อะไรก็ได้)
VFP Select Datetime() อย่างนี้ไม่ได้ เธอต้องการ From แต่ถ้าเขียนอย่างนี้ Select Datetime() From Dual อย่างนี้ได้ (Dual เป็น Cursor และกะล่อนพอตัว ดังข้อตกลงที่ 3.)
จากที่กล่าวมาทั้งหมด บางท่านคงจะพอมองเห็นว่า จุดประสงค์ของผมต้องการอะไร ?
ใช่แล้วครับ ผมต้องการใช้คำสั่ง Getdate เพียงคำสั่งเดียวและเรียกใช้ได้กับหลายฯ Database ครับ
แนวทางในการแก้ไขปัญหา ก็จะแตกต่างกันไป ตามภูมิคุ้มกันบกพร่องของใครจะน้อยกว่ากัน
ใน ORACLE ผมสร้าง Function ขึ้นมา ตั้งชื่อให้เป็นมงคล Getdate ดังนี้ข้อที่ x.1
ใน SQLServer ผมสร้าง View ขึ้นมา ตั้งชื่อไม่เป็นมงคล Dual ดังนี้ข้อที่ x.2 *แก้ไข 15/08/2552 Getdate --> Dual
ใน ... ก็เหมือนกัน (มันลำบากแต่ก็ทำแค่ครั้งเดียว)
หัวข้อที่ x.1 สร้าง Function ใน ORACLE (Version 10.5)
CREATE OR REPLACE FUNCTION Getdate RETURN date IS
tmpVar date;
BEGIN
tmpVar := sysdate ;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END Getdate;
หัวข้อที่ x.2 สร้าง View ใน SQL Server
Select GetDate() As Getdate
*****เพิ่มเติม 15/08/2552
ใน SQL Server เราสามารถใช้คำสั่ง Select Getdate From Dual ได้ค่ะ
ใน ORACLE เราสามารถใช้คำสั่ง Select Getdate From Dual ได้ค่ะ
ใน ... เราสามารถใช้คำสั่ง Select Getdate From Dual ได้ค่ะ
*****และคุณควรจะเขียนฟังก์ชั่นขึ้นมาเพื่อรวม 3 บันทัดข้างบนให้เป็นหนึ่งเดียว
และผลลับที่ได้กลับมาก็คือ วันและเวลาจาก Server นั่นเองแล
เงิน คือพระเจ้า เงินคือทุกสิ่ง เงินคือทุกอย่าง เงินคือความดี เงินคือความชั่วร้าย
เงิน ตกใส่**มันก็อ้า
เงิน ตกใส่หญ้ามันก็ตาย
เงิน มาผ้าหลุด
เงิน ไม่มาผ้าไม่หลุด
เงิน ไม่มีเลิกคบเป็นเพื่อน
เงิน มีค่อยมาคบกันใหม่ (เพื่อนเอ๋ย)
เงิน เงิน เงิน เงิน เงิน ฉันรักเธอเหลือเกิน เงิน เงิน เงิน เงิน เงิน
เรามาลองเล่นสนุกฯกับ Dual กันครับ
VFP (Microsoft Visual FoxPro)
Insert into TestData ;
Select 'นายA',{^2009-01-01} From Dual ;
Union ;
Select 'นายB',{^2009-01-02} From Dual ;
Union ;
Select 'นายC',{^2009-01-03} From Dual ;
Union ;
Select 'นายD',{^2009-01-04} From Dual
อยากจะพล่ามให้มากกว่านี้แต่ วันและเวลา มันไม่ใช่ของผมคนเดียว
ปล. คุณแม่ของผมเป็นมะเร็งตับ และรักษากับแพทย์แผนปัจจุบัน (รักษามาหมดแล้วทุกโรงพยาบาลในเมืองไทย) แต่ผมเสียดายถ้าคุณหมอที่ยิงตัวตาย (เป็นมะเร็ง) ก่อนที่คุณแม่ของผม
จะจากโลกใบนี้ไป ผมจะยืนกรานให้ท่านรักษากับแพทย์แผนโบราณ ให้ท่านกินยาสมุนไพร/กินยาหม้อ แต่อย่างว่าผมไม่ใช่ลูกคนเดียวและแต่ละคนก็คิดไม่เหมือนกัน (รัก) หนทางในการรักษา
มันก็เป็นอย่างนี้ (เลือกแผนปัจจุบัน) ผม/พี่น้องของผม เสียดาย...โอกาส และมันก็ไม่มีโอกาสอีกแล้ว (ผมและพี่น้องของผม มีความคิดที่แตกต่าง แต่ ไม่แตกแยก)
คนเราถ้าไม่สงสารตัวเองแล้วใครเล่าจะมาสงสารเรา (ไม่ต้องมาสงสารผมหรอก)
Date :
2013-11-03 08:18:24
By :
love9713
Load balance : Server 04