|  | 
	                
  
    |  |  
    | 
        
        สอบถามวิธี Convert time ที่เป็น String ให้เป็น Format H:i:s ใน SQL server ครับ     |  
    |  |  
 
              
  
    | 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ถ้าผมจำไม่ผิด คุณเคยถาม เรื่อง "STCRD (Stock Card)" และผมเคยตอบไปโดยใช้ SQL Query จริง (ในบางสถานะการณ์/บางความต้องการ) 
 ผมถามว่าคุณจำได้หรือไม่? ล่ะ
 
 เพราะฉะนั้น "งดดื่มนมก่อนดีไหม? และทวบทวนดู"
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-08 20:37:52 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | คุณดูนะผมตั้งใจลืม "ตั้งใจลืมเช็ค" 
 
 Code (VB.NET)
 
     'รายงานทางบัญชี สต๊อคการ์ด (IC_B4_02xIC_21) 
    'OrgCode = OrgName/OrgNameUS/etc
    'PARTHIST.PROCESS_SEQ = 60-รับ, 100-จ่าย
    'SQLite Date String Format 
    'yyyy-MM-dd HH:MM:SS.SSS
    Public Shared Function IC_B4_02xIC_21(ByVal Warehouse As String,
                                          ByVal From_Part_NO As String,
                                          ByVal To_Part_NO As String,
                                          ByVal From_Date As String,
                                          ByVal To_Date As String,
                                          ByVal OrgCode As String) As DataTable
        Dim strSQL As XCData = Nothing
        'Dim xFrom_Date As String = WL_Utility.DateUtils.GetFirstDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd") '2014-01-01
        'Dim xTo_Date As String = WL_Utility.DateUtils.GetLastDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd 23:59:59") '2014-01-01 23:59
        'SQL Server DateAdd(day, -30, GETDATE())
        'SQLite SELECT DATE('NOW','-30 day')
        'Firebird CAST('TODAY' AS TIMESTAMP) - 30
        Dim curDateDec30 As String = If(RDBMSType = "Firebird", "CAST('TODAY' AS TIMESTAMP) - @P_Cycle_NO", If(RDBMSType = "SQLite", "DATE('NOW','-@P_Cycle_NO day')", "Not Implement yet."))
        Select Case (WL_Common.PubConstant.RDBMSType)
            Case "MsAccess"
                'Not Implement yet.
            Case Else
                strSQL =
<![CDATA[
SELECT 'HED' AS REP_GROUP, WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO, 'AAAAAAAA' AS DOC_NO, '  ' AS SEQ, CAST('3/3/2014' AS TIMESTAMP) AS DOC_DATE, CAST('00' AS INTEGER) AS PROCESS_SEQ, 
       'AA' AS TRAN_CODE, 'AAA' AS TRAN_TYPE, MIN(WHS_STAT.BEGIN_BAL) AS BEGIN_BAL, MIN(WHS_STAT.BEG_AMT) AS BEG_AMT, SUM(HIS_STAT.REC_QTY) AS REC_QTY, 
       SUM(HIS_STAT.ISS_QTY) AS ISS_QTY, SUM(HIS_STAT.ADJ_INC) AS ADJ_INC, SUM(HIS_STAT.ADJ_DEC) AS ADJ_DEC, 0.00 AS TRAN_QTY, 0.00 AS TRAN_QTYSORT, 
       SUM(HIS_STAT.TRAN_AMT) AS TRAN_AMT, '0' AS POST_FLAG, MIN(WHS_BAL.ACCODE) AS ACCODE, MIN(AC_TAB.ACCOUNT_NO) AS ACCOUNT_NO, MIN(UM_TAB.UM) AS UM, 
       MIN(UM_TAB.UM_DESC) AS UM_DESC, MIN(WHS_BAL.PART_DESC) AS PART_DESC, 0.00 AS UNIT_COST, (
		SELECT MIN(WHS_TAB.WHS_DESC)
		FROM WHS_TAB
		WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
			AND WHS_TAB.STK_LOCATION = (
				SELECT MIN(WHB.STK_LOCATION)
				FROM WHS_TAB WHB
				WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
				)
		) AS WHS_DESC, (
		SELECT MIN(TRAN_DESC)
		FROM PARTHIST
		WHERE 1 <> 1
		) AS TRAN_DESC, MIN(REP1.NOTE) AS NOTE, MIN(REP2.NOTE) AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN WHS_STAT ON WHS_BAL.WAREHOUSE = WHS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = WHS_STAT.PART_NO AND WHS_STAT.ZYEAR = '57' AND WHS_STAT.PERIOD = '3'
LEFT JOIN HIS_STAT ON WHS_BAL.WAREHOUSE = HIS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = HIS_STAT.PART_NO AND HIS_STAT.DOC_DATE < '3/1/2014'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1 
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST' 
WHERE WHS_BAL.WAREHOUSE = @Warehouse AND WHS_BAL.PART_NO BETWEEN @From_Part_NO AND @To_Part_NO 
GROUP BY WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE, 
        PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE 
		WHEN ABS(PARTHIST.TRAN_QTY) > 0
			THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
		ELSE 0
		END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
		SELECT MIN(WHS_TAB.WHS_DESC)
		FROM WHS_TAB
		WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
			AND WHS_TAB.STK_LOCATION = (
				SELECT MIN(WHB.STK_LOCATION)
				FROM WHS_TAB WHB
				WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
				)
		) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'หอยหมี' AND WHS_BAL.PART_NO BETWEEN 'หอย' AND 'เหม็น'
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE, PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE 
		WHEN ABS(PARTHIST.TRAN_QTY) > 0
			THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
		ELSE 0
		END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
		SELECT MIN(WHS_TAB.WHS_DESC)
		FROM WHS_TAB
		WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
			AND WHS_TAB.STK_LOCATION = (
				SELECT MIN(WHB.STK_LOCATION)
				FROM WHS_TAB WHB
				WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
				)
		) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CASE 
		WHEN (- HDL.TRAN_QTY) > 0
			THEN CAST((- HDL.TRAN_QTY) AS NUMERIC(15, 2))
		ELSE 0
		END AS HDL_TRAN_QTY, CASE 
		WHEN HDL.UNIT_COST > 0
			THEN CAST(HDL.UNIT_COST AS NUMERIC(15, 2))
		ELSE 0
		END AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN HIS_DTL HDL ON HDL.WAREHOUSE = PARTHIST.WAREHOUSE AND HDL.DOC_DATE = PARTHIST.DOC_DATE AND HDL.DOC_NO = PARTHIST.DOC_NO AND HDL.SEQ = PARTHIST.SEQ
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'หอยหมี' AND HDL.UNIT_COST > 0 AND (- HDL.TRAN_QTY) > 0 AND WHS_BAL.PART_NO BETWEEN 'หอย' AND 'เหม็น'
ORDER BY 2, 3, 6, 7, 4, 5       
]]>
        End Select
        'ตั้งใจลืมเช็ค WHS_TAB.WAREHOUSE.OrgCode = 'OrgCode' ด้วย
        Return WL_DatabaseVB.DbHelper.Query(strSQL.Value, New List(Of DbParameter) From
                                                                     {
                                                                      BuildParameter("@From_Date", From_Date),
                                                                      BuildParameter("@To_Date", To_Date),
                                                                      BuildParameter("@Tran_Code", Warehouse),
                                                                      BuildParameter("@Warehouse", Warehouse)
                                                                     })
    End Function
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-08 20:52:40 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | งงครับ 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 08:37:19 | By :
                            kenghockey |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | มันไม่มีอะไรซับซ้อนเลย (ตอบแบบไม่ต้องใช้สมองคิด) (ข้างบนก็มีคำตอบแต่ความละเอียดของคุณไม่ถึง)
 
 ถ้าคุณใช้ SQL Server Version > 2008 ก็ใช้ฟังก์ชั่น Format จบเห่
 
 นอกเหนือจากนั้นก็นี่เลย ตรงไปและตรงมา
 Code (SQL)
 
 
SELECT SUBSTRING('184455', 1, 2) + ':' + SUBSTRING('184455', 3, 2) + ':' + SUBSTRING('184455', 5, 2)
SELECT REPLACE((SELECT SUBSTRING('184455', 1, 2) + ':' + SUBSTRING('184455', 3, 2) + ':' + SUBSTRING('184455', 5, 2)), ':', '')
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 09:13:49 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | Time string 184455 จากจะเขียน Sql Query Select ให้มันแสดงเป็น H:i:s 
 i คืออะไรรึ
 
 แล้วทำไมไม่ Insert เป็น H:i:s ตั้งแต่แรกละครับ
 แบบนี้ก็ทำงานซ้ำซ้อนสิครับ
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 09:57:56 | By :
                            lamaka.tor |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              |  Quote: แบบนี้ก็ทำงานซ้ำซ้อนสิครับ
 --- RDBMS สมัยนี้มันเก่ง เก็บอย่างไรก็ได้
 --- Hard disk สมัยนี้มันเก่ง และราคาถูก (ซื้อเอาไว้ปาหัวหมาเล่นฯก็ย่อมได้)
 
 แล้วแต่ท่าน SA จะสะดวกเก็บ (เรื่องของมึง+5555)
 --- เราในฐานะโปรแกรมเมอร์ "คุณอยากได้แบบไหน เราทำให้ได้เสมอ (ดึงข้อมูลมาใช้งาน)"
 
 
 พอดีนั่งแกะโปรแกรม 12 ตัว (และจัดทำเป็นเอกสารอ้างอิง)
 มีอยู่อย่างหนึ่งที่เหมือนฯกันในทุกฯโปรแกรมนั่นคือ ยอดสะสม (GL Balance)
 --- บางโปรแกรมก็เก็บเป็น A งวด 1-24
 --- บางโปรแกรมก็เก็บเป็น B งวด 1-12 (0 คือยอดยกมาต้นปี)
 --- บางโปรแกรมก็เก็บเป็น C งวด 1-13 (13 คือยอดยกไปชาติหน้า) เป็นต้น
 ...
 ...
 ...
 
 ก็ว่ากันไป แต่สุดท้ายแล้วผลลัพธ์ที่ได้ก็เหมือนฯกันนั่นแหละ
 
 
 เบื่อเหมือนกันก็เลยนั่งเขียน SQL Query เล่นฯ และอยากได้ผลลัพธ์ดังนี้
 
 
  
 
 ข้อมูลตัวอย่าง
 Code (SQL)
 
 
DECLARE @GLBAL TABLE (Level smallint, Account varchar(100), Balance Numeric(10,2), AccountCode varchar(10), ParentACCode varchar(10))
INSERT INTO @GLBAL VALUES(1, 'Revenue', 0, '41', null)
INSERT INTO @GLBAL VALUES(2, 'Direct Income', 0, '411', '41')
INSERT INTO @GLBAL VALUES(3, 'Sales', 0, '4111', '411')
INSERT INTO @GLBAL VALUES(4, 'Sales', 0, '41111', '4111')
INSERT INTO @GLBAL VALUES(5, 'In Store Sales', 100, '411111', '41111')
INSERT INTO @GLBAL VALUES(5, 'Online Sales', 200, '411112', '41111')
INSERT INTO @GLBAL VALUES(2, 'Indirect Income', 0, '412', '41')
INSERT INTO @GLBAL VALUES(3, 'Interest', 0, '4121', '412')
INSERT INTO @GLBAL VALUES(4, 'Bank Interest', 0, '41211', '4121')
INSERT INTO @GLBAL VALUES(5, 'Bank Interest A', 400, '412111', '41211')
INSERT INTO @GLBAL VALUES(5, 'Bank Interest B', 700, '412112', '41211')
INSERT INTO @GLBAL VALUES(3, 'Other Income', 0, '4122', '412')
INSERT INTO @GLBAL VALUES(4, 'Other Income', 0, '41221', '4122')
INSERT INTO @GLBAL VALUES(5, 'Other Income', 900, '412211', '41221')
SELECT * FROM @GLBAL
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 13:00:49 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | แสดงว่ามีหลายคนที่ เดิมกลับไปกลับมา(แบบว่าชีวิตนี้ว่างจัด) น่านแหละคือประเด็นครับ(RDBMS Hard disk ปิ่นโต นมโต แต่อย่างใด นะปู่)
 เอ....รึว่าผมพิมผิดพักนี้มั่วแต่กับวงจรไม่ได้เขียนโปรแกรม บ้านๆ เลยทำให้คนแก่ๆ(สมองอะนะ)เลอะเลือนจากคำง่ายๆไปได้ก็เป็นได้
 
 ย้อนกลับมาๆๆๆอย่าเพิ่งไปไกลครับ
 เด๋วก็ตกเหว.....หร่อก
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 13:30:17 | By :
                            lamaka.tor |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | จาก #NO4 เจ้าของกระทู้ก็คงจะได้คำตอบไปแล้ว (ถ้าไม่ได้มีอยู่ทางเดียวนั่นคือ เลิกเขียนโปรแกรมไปเลย) 
 จาก #NO7-#NO8
 
 ผมจะเล่าอะไรให้ฟังเล่นฯนะครับ
 จาก 12 โปรแกรมที่ผมนั่งแงะมันอยู่ ทุกฯโปรแกรมมันมีจุดเด่นของมันครับ
 --- บางอย่างจุดเด่นมันก็เป็นครูของเรา จุดด้อยผมยังมองไม่เห็นนะครับ
 
 
 ผมคิดอะไรไปไกลกว่าที่คุณเห็น (แน่นอนว่าผมคิดหลายชั้น ยากที่ใครฯจะตามทัน ณ.เวลานี้)
 จาก #NO6 ที่ผมเขียนประกอบเอกสารของผม เพื่ออะไร?
 --- ผมอยากรู้ว่าหลายฯโปรแกรมที่ใช้งานจริง (ลูกค้า > หลายแสนราย) เวลามันลงบัญชีมันทำอย่างไร?
 ----- คำว่าลงบัญชี บางคนก็เรียกว่า "ผ่านรายการ" บางคนก็เรียกว่า "สั่งให้ลงบัญชีใหม่"
 ------ แน่นอนว่า มันต้องมี Algorithm ซ่อนอยู่ข้างใน (คุณมีผมก็มีเช่นเดียวกันครับ "ไก่เห็นหมีนมงู งูเห็นหมีนมไก่นั่นแหละครับ")
 
 
  
 จากรูปภาพ #NO6 ผมยกตัวอย่างให้ดูเฉยฯ (จริงฯแล้วมันลงเป็นงวดฯไป เช่น งวดเดือน1, งวดเดือน2, ...)
 การเขียน SQL Query แบบนี้สำหรับผมมันง่ายพอฯกับ ผมให้สาวฯตักข้าวเข้าปากของผมเสียอีกครับ
 หรือปลอกกล้วยเข้าปาก ประมาณนั้นครับ
 
 ***** การเขียน SQL Query ไม่มีอะไรที่ซับซ้อนไปกว่าความต้องการของผมอีกแล้ว *****
 --------- ประมาณว่าความรู้พวกนี้ผมใช้แค่ ประถม 1 เองครับ
 
 
 ถามว่าผมว่างไหม?
 --- ระดับนี้แล้ว งานบนมือหลักล้านทั้งนั้น (และมีหลายงาน)
 --- เวลาของผมมีค่า ทุกฯวินาทีครับ (ผมทำอะไรผมไม่สูญเปล่าแน่นอน เชื่อใจได้ครับ)
 ---- ผมไม่ใช่นักเลงคีย์บอร์ด ที่หาสาระและแก่นสารไม่ได้ (ทุบโต๊ะปังปังปัง ฟังผม +55555)
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 16:31:57 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | จากรูปภาพ #NO9 ผมอธิบายเพิ่มเติมให้อีกก็ได้ (หัดสงสัย ปัญญามันจะตามมาโดยที่สมองไม่ต้องสั่ง) คำว่า Revenue และ AccountCode ทำไมมันขึ้นต้นด้วยตัวเลข 4
 
 อธิบายแบบกระชับ (เครื่องฟิตสตาร์ดติดง่าย) ดังนี้
 มันเป็นภาษาสากลและใช้กันทั่วโลก ดังนี้ชะเอิงเอย
 
 ในทางบัญชีนิยมแบ่งออกเป็น 5 หมวดใหญ่ฯ ดังนี้
 1. Assets (ทรัพย์สิน)
 2. Liablilities (หนี้สิน)
 3. Capital (ทุน)
 4. Revenue (รายได้)
 5. Expenses (ค่าใข้จ่าย)
 
 สมการบัญชีมันเป็นแบบนี้ สินทรัพย์ = หนี้สิน + ทุน (ส่วนของเจ้าของ)
 
 มีอีกเยอะเลย แต่อธิบายให้กระชับ มันก็ขี้เกียจพิมพ์แล้วง่ะ
 ...
 ...
 ...
 
 ปล. กำลังเตรียมตัวไปสอบวิชาบัญชี 102 อยู่ครับ (ถือโอกาสทบทวนไปในตัว)
 ---- ที่ไปเรียนเพิ่มไม่ใช่อะไรหรอก (เผื่อได้ฟัน อ.สาวฯ หรือ น.ศ สาวฯ ได้ก็ดีไม่ได้ก็ไม่เป็นไร (ฟัน)) + 55555
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 16:43:11 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | เกินเยียวยาจริงๆ น่าสงสารจัง(สงสัยผมสื่อสารผิดจริง) 
 ผมรู้สึกสงสารทุกคนที่หลงทางเสมอ แม้เขาจะยังงงกับตัวเอง
 แต่อย่างไรก็ดีเราควรหวังว่าซักวันเขาจะกลับมาสู่เส้นทางที่ถูกต้อง
 
 คำกล่าวของ TOR@CHEMISTRY
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 18:04:48 | By :
                            lamaka.tor |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ผมไม่ไหวแล้ว (ของีบสัก 24 ชั่วโมง) 
 --- จริงฯในฝั่งของ PHP ผมอยากได้ (อยู่เวียตนามมักจะใช้คำว่า "หเงี่ยน") มาเป็นที่ปรึกษาของผมนะ อทิเช่น
 ------ คุณ mr.v , คุณ DÜd€ :3 และอีกหลายฯท่าน
 
 แต่ผมคงไม่มีวาสนา แม้กระทั่งหวังว่า "กินเหล้ากินเบียร์ คุยกันไป"
 --- โปรแกรมเมอร์คุยกับโปรแกรมเมอร์
 --- (ไม่มีคำว่าธุรกิจมาปะปน ยกเว้นว่า น้องคนนี้สวยดีนะ HOW Mouch... +55555)
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-08-09 20:28:32 | By :
                            หน้าฮี |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |