Showing posts with label Date. Show all posts
Showing posts with label Date. Show all posts

Sunday, February 2, 2020

SQL Server - Select DateTime Without Minute

SELECT CAST(CONVERT(CHAR(16), GetDate(),20) AS datetime) AS TagDateTime

Thursday, November 7, 2019

เรียกดูข้อมูลทุก 15 นาที

ต้องการเรียกข้อมูลที่ลงท้ายด้วยนาที ที่ 0, 15,30 และ 45


แบบเดิม

SELECT Distinct TagDateTime, Column2, Column3
FROM YourTable
WHERE TagDateTime >=@D1 AND TagDateTime <=@D2
       and (DATEPART(minute,tagdatetime) % 15) = 0
        ORDER BY TagDateTime


อีกแบบ

SELECT TagDateTime, Column2, Column3
FROM YourTable
WHERE TagDateTime IN ( SELECT MIN(TagDateTime)
                              FROM YourTable
                              WHERE TagDatetime between @D1 and @D2
                              GROUP BY CONVERT(VARCHAR(8), TagDateTime, 112), DATEPART(HOUR ,TagDateTime),(DATEPART(MINUTE ,TagDateTime)/15)
                      )  

และถ้าต้องการเรียกทุกชั่วโมง

SELECT TagDateTime, Column2, Column3
FROM YourTable
WHERE TagDateTime IN ( SELECT MIN(TagDateTime)
                              FROM YourTable
                              WHERE TagDatetime between @D1 and @D2
                              GROUP BY CONVERT(VARCHAR(8), TagDateTime, 112), DATEPART(HOUR ,TagDateTime)
                      )


Wednesday, February 7, 2018

SQL Command, Select, Date

DECLARE @D1 DateTime
DECLARE @D2 DateTime
SET @D1 = '2018-01-01'
SET @D2 = '2018-01-04'

แบบที่ 1 ที่เคยใช้
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn>= @D1 AND dateColumn <= @D2


แบบที่ 2 ใช้ BETWEEN
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN  @D1 AND @D2


แบบที่ 3 กรณีต้องการเลือกตั้งแต่วันที่ 1 ของเดือนนั้น จนถึงวันที่เลือก และต้องการลดจำนวนพารามิเตอร์ลงจาก 2 ตัวเหลือ 1 ตัว
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN  DATEADD(D,-(Day(@D2)-1),@D2) AND @D2

Monday, March 20, 2017

Friday, April 1, 2016

DATEPART

ต้องการหาว่า
มีวันไหนบ้างที่จำนวน Record ไม่เท่ากับ 1440

SELECT count(TagDateTime) AS recCnt,DATEPART(year,[TagDateTime]) AS iYear ,DATEPART(month,[TagDateTime]) AS iMth ,DATEPART(day,[TagDateTime]) As iDay
  FROM TableName
group by DATEPART(year,[TagDateTime]),DATEPART(month,[TagDateTime]),DATEPART(day,[TagDateTime])
having count([TagDateTime]) <> 1440
order by DATEPART(year,[TagDateTime]),DATEPART(month,[TagDateTime]),DATEPART(day,[TagDateTime])

Sunday, September 16, 2012

ตั้ง Culture ใน VB.Net

เริ่มต้นก็ Import ก่อน
Imports System.Threading
Imports System.Globalization



แล้วใน Form_Load หรือ ก่อน InitializeComponent() ก็ตั้งค่ารูปแบบก่อนดังนี้
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-GB")
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture



ส่วนตัวก็ตั้งค่าแบบ "en-GB" ก็สะดวกดี ผู้ใช้ไม่งง

Thursday, September 13, 2012

VB.net - Function หาวันแรกและวันสุดท้ายของเดือน

Private Function GetFirstDayOfMonth(ByVal _ 

        dtDate As DateTime) As DateTime 
 Dim dtFrom As DateTime = dtDate 
 dtFrom = dtFrom.AddDays(-(dtFrom.Day - 1)) 
 Return dtFrom 
End Function
Private Function GetLastDayOfMonth(ByVal _
        dtDate As DateTime) As DateTime 
 Dim dtTo As New DateTime(dtDate.Year, _
       dtDate.Month, 1) 
 dtTo = dtTo.AddMonths(1) 
 dtTo = dtTo.AddDays(-(dtTo.Day))  
 Return dtTo 
End Function

Monday, August 6, 2012

SQL Command - Select เฉพาะเวลาที่ต้องการ

ถาม ถ้าใน TABLE1 มีคอลัมน์ชื่อ DateColumn1 ชนิด DateTime
ใน TABLE1 นั้นมี Records ทุก ๆ ชั่วโมงทุก ๆ วัน
ถ้าเราต้องการเฉพาะเวลา 9.00 น.ของแต่ละวัน จะใช้คำสั่ง Select แบบไหน

ตอบ
สามารถใช้ฟังก์ชั่น DATEPART มีตัวอย่างดังนี้

SELECT * FROM TABLE1
WHERE DATEPART(hh, DateColumn1) = 9

Thursday, June 21, 2012

Runtime Error , customError tag mode "Off"

Web App. ลองรันในเครื่องตัวเองได้พอ Up load ขึ้น Server รันหน้าที่มี Calendar แล้วก็เกิด Error แบบนี้

ก็เลยทำตามคำแนะนำคือเพิ่ม Tag customErrors mode="off" เข้าไปใน Web.Config
แล้วรันใหม่ก็ปรากฏจุดที่ทำให้เกิด Error ที่บรรทัดที่เท่าไร
เมื่อพบว่าเกิด Error เกี่ยวกับรูปแบบของ Date จึงไปแก้ไข Code ที่ Page นั้นโดยเพิ่ม
UICulture = "en" Culture = "en-GB"
เข้าไปในบรรทัดแรกของ Page นั้นกลายเป็น
<%@ Page Language="VB" MasterPageFile="~/YourMasterPage.master" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPage" UICulture = "en" Culture = "en-GB" title="Your Title" %>
เท่านี้ก็จบ สามารถรันได้เป็นปกติ

Thursday, December 1, 2011

การแปลงวันที่ให้เป็น String ตามรูปแบบที่ต้องการ

การ convert Date String โดยบังคับปี ค.ศ. หรือ พ.ศ. ได้นั้น ทำดังนี้ครับ

Dim d as Date
Dim s as String

d = Date.Parse(s, New CultureInfo("en-GB")) ' บังคับ ค.ศ.
d = Date.Parse(s, New CultureInfo("th-TH")) ' บังคับ พ.ศ.

หรือ
s = d.ToString(New CultureInfo("en-GB")) ' บังคับ ค.ศ.
s = d.ToString(New CultureInfo("th-TH")) ' บังคับ พ.ศ.
ไม่แนะนำให้ใช้ CDate เพราะไม่รู้ว่าเป็น ค.ศ. หรือ พ.ศ.

s = CDate(d).ToString("dd-MM-yyyy")

แต่จะแนะนำให้ใช้
s = d.ToString("yyyy-MM-dd", CultureInfo.CreateSpecificCulture("en-GB"))
(แต่ต้อง Imports System.Globalization ก่อน)

Thursday, June 9, 2011

คำนวณหาความแตกต่างระหว่างสอง DateTime ใน Crystal report

  • ใช้ฟังก์ชัน DateDiff("s",DateTime1,DateTime2) โดยที่ DateTime1 เกิดก่อน DateTime2
  • "s" คือ Interval Type มีการกำหนดรูปแบบดังนี้
Interval type  Description 
yyyy             Year
q                  Quarter
m                 Month
y                  Day of year
d                  Day (both "y" and "d" find the difference in days)
w                 Number of weeks between startDateTime and endDateTime
ww               Number of firstDayOfWeek's between startDateTime and endDateTime
h                 Hour
n                 Minute
s                 Second

Wednesday, April 20, 2011

การหาระยะเวลาที่แตกต่างกัน Time Diff

Dim d1 As Date = Now
Dim d2 As Date = Now.AddMinutes(60)
Dim Tdiff As Double = DateDiff(DateInterval.Minute, d1, d2)


หมายเหตุ
d2 เป็นตัวตั้งและ d1 เป็นตัวลบ
DateInterval.xxx : xxx นี้เลือกได้ว่าต้องการเป็นหน่วยนาทีหรือชั่วโมงหรือวินาทีหรือวันหรือ... ลองเลือกดู


หรือจะใช้ Timespan ก็ได้

Dim TdiffHour as Decimal
Dim TimeDiff As TimeSpan
TimeDiff = d2 - d1
TdiffHour = TimeDiff.TotalHours

Thursday, February 17, 2011

แก้ปัญหากำหนดค่า Date ตามที่ต้องการแล้วเกิด Bug

Dim d1, d2 as Date
d1=New DateTime(dtpFrom.Value.Year, dtpFrom.Value.Month, dtpFrom.Value.Day, 8, 0, 0)
d2=New DateTime(dtpTo.Value.Year, dtpTo.Value.Month, dtpTo.Value.Day+1, 8,0,0) 'เกิด Bug

แก้โดย

Dim mdate As Date = dtpTo.Value
mdate = mdate.AddDays(1)
d2=New DateTime(mdate.Year, mdate.Month, mdate.Day, 8, 0, 0)

Tuesday, February 1, 2011

DateTime.ToString Method ()

Option Explicit
Option Strict

Imports System
Imports System.Globalization

Public Class MainClass
    
    Public Shared Sub Main()
        Dim dt As DateTime = DateTime.Now
        Dim myformat() As String =  {"d", "D", _
                                    "f", "F", _
                                    "g", "G", _
                                    "m", _
                                    "r", _
                                    "s", _
                                    "t", "T", _
                                    "u", "U", _
                                    "y", _
                                    "dddd, MMMM dd yyyy", _
                                    "ddd, MMM d ""'""yy", _
                                    "dddd, MMMM dd", _
                                    "M/yy", _
                                    "dd-MM-yy"}
        Dim mydate As String
        Dim i As Integer
        For i = 0 To myformat.Length - 1
            mydate = dt.ToString(myformat(i), DateTimeFormatInfo.InvariantInfo)
            Console.WriteLine(String.Concat(myformat(i), " :", mydate))
        Next i

    ' Output.
    '
    ' d :08/17/2000
    ' D :Thursday, August 17, 2000
    ' f :Thursday, August 17, 2000 16:32
    ' F :Thursday, August 17, 2000 16:32:32
    ' g :08/17/2000 16:32
    ' G :08/17/2000 16:32:32
    ' m :August 17
    ' r :Thu, 17 Aug 2000 23:32:32 GMT
    ' s :2000-08-17T16:32:32
    ' t :16:32
    ' T :16:32:32
    ' u :2000-08-17 23:32:32Z
    ' U :Thursday, August 17, 2000 23:32:32
    ' y :August, 2000
    ' dddd, MMMM dd yyyy :Thursday, August 17 2000
    ' ddd, MMM d "'"yy :Thu, Aug 17 '00
    ' dddd, MMMM dd :Thursday, August 17
    ' M/yy :8/00
    ' dd-MM-yy :17-08-00
    End Sub 'Main 
End Class 'MainClass