QA@IT
«質問へ戻る

コード修正

2
本文
 
 現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 
 
-こちら([date (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/bb630352.aspx))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。 
+※2016/9/18 15:05記載
 
-※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。 
-また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。 
+ほかのサイトさんで教えていただいた記述方法を試してみると正しい実行結果が得られたので、
+記載しておきます。
 
+
 ```ここに言語を入力
 Imports System.Data.SqlClient
 
-Partial Class dateGet_test
+Partial Class dateGet_test2
     Inherits System.Web.UI.Page
 
-    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click
+    Protected Sub BtnGo_Click(sender As Object, e As System.EventArgs) Handles BtnGo.Click
 
         Dim day As String = GetDate()
 
         Dim dtToday As DateTime = Date.Today
 
-        If day Like dtToday.ToString() Then
+        If Date.Compare(Date.Parse(day), dtToday) = 0 Then
             LblMsg.Text = "今日のデータはすでに格納されています"
         Else
             LblMsg.Text = "大丈夫!"
 
     End Sub
 
+
     'データベースから日付(date型データ)を取得する関数
-    Private Function GetDate() As String
+    Private Function GetDate() As Date
 
-        Dim ret As String = ""
 
+        Dim ret As Date
+
         Dim cnStr As String = System.Configuration.ConfigurationManager.
             ConnectionStrings("○○○○○○ConnectionString").ConnectionString
 
                 Dim result As String = ""
                 result = command.ExecuteScalar()
 
-                If result IsNot "" Then ret = CInt(result)
+                ret = CDate(result)
 
                 connection.Close()
 
         Return ret
 
     End Function
+
 End Class
-![VW_testvalue_skima.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/222/VW_testvalue_skima.PNG)
+```

SQLserverのdate型データとVBで取得した日付を比較するプログラムを記述したいです

初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。

※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。

テーブルからdate型のデータを(SQLserver2012を使用)取得し、
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、
同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。
(質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
tbl_value.PNG

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。
現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。
(SQL構文で「FacilityID」を「1」と指定した場合)

<テーブルの構成>
※画像が挿入できないので記し書きします。

valueID : int
valueA ~ valueF : decimal(3,2)
date : date
FacilityID : int

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。

※2016/9/18 15:05記載

ほかのサイトさんで教えていただいた記述方法を試してみると正しい実行結果が得られたので、
記載しておきます。

Imports System.Data.SqlClient

Partial Class dateGet_test2
    Inherits System.Web.UI.Page

    Protected Sub BtnGo_Click(sender As Object, e As System.EventArgs) Handles BtnGo.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If Date.Compare(Date.Parse(day), dtToday) = 0 Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub


    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As Date


        Dim ret As Date

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                ret = CDate(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function

End Class
初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。 

※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。
 

テーブルからdate型のデータを(SQLserver2012を使用)取得し、 
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、 
 同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。 
 (質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
![tbl_value.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/216/tbl_value.PNG)

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。 
 現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。 
 (SQL構文で「FacilityID」を「1」と指定した場合) 

<テーブルの構成>
※画像が挿入できないので記し書きします。

valueID : int
valueA ~ valueF : decimal(3,2)
date : date
FacilityID : int

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 

※2016/9/18 15:05記載

ほかのサイトさんで教えていただいた記述方法を試してみると正しい実行結果が得られたので、
記載しておきます。


```ここに言語を入力
Imports System.Data.SqlClient

Partial Class dateGet_test2
    Inherits System.Web.UI.Page

    Protected Sub BtnGo_Click(sender As Object, e As System.EventArgs) Handles BtnGo.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If Date.Compare(Date.Parse(day), dtToday) = 0 Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub


    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As Date


        Dim ret As Date

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                ret = CDate(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function

End Class
```

実装環境追記

2
本文
-初級者です。初歩的な質問ですが、よろしくお願いします。 
+初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。 
 
+※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。
+ 
+
 テーブルからdate型のデータを(SQLserver2012を使用)取得し、 
 VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、 
  同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。 
  現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。 
  (SQL構文で「FacilityID」を「1」と指定した場合) 
 
+<テーブルの構成>
+※画像が挿入できないので記し書きします。
+
+valueID : int
+valueA ~ valueF : decimal(3,2)
+date : date
+FacilityID : int
+
 現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 
 
 こちら([date (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/bb630352.aspx))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。 
 
     End Function
 End Class
+![VW_testvalue_skima.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/222/VW_testvalue_skima.PNG)

SQLserverのdate型データとVBで取得した日付を比較するプログラムを記述したいです

初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。

※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。

テーブルからdate型のデータを(SQLserver2012を使用)取得し、
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、
同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。
(質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
tbl_value.PNG

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。
現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。
(SQL構文で「FacilityID」を「1」と指定した場合)

<テーブルの構成>
※画像が挿入できないので記し書きします。

valueID : int
valueA ~ valueF : decimal(3,2)
date : date
FacilityID : int

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。

こちら(date (Transact-SQL))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。

Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                If result IsNot "" Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class
![VW_testvalue_skima.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/222/VW_testvalue_skima.PNG)
初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。 

※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。
 

テーブルからdate型のデータを(SQLserver2012を使用)取得し、 
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、 
 同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。 
 (質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
![tbl_value.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/216/tbl_value.PNG)

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。 
 現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。 
 (SQL構文で「FacilityID」を「1」と指定した場合) 

<テーブルの構成>
※画像が挿入できないので記し書きします。

valueID : int
valueA ~ valueF : decimal(3,2)
date : date
FacilityID : int

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 

こちら([date (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/bb630352.aspx))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。 

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。 
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。 

```ここに言語を入力
Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                If result IsNot "" Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class
![VW_testvalue_skima.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/222/VW_testvalue_skima.PNG)

コードの修正

2
本文
         Dim dtToday As DateTime = Date.Today
 
         If day Like dtToday.ToString() Then
-            LblMsg.Text = "今日のデータはすでに格納されています" '処理A
+            LblMsg.Text = "今日のデータはすでに格納されています"
         Else
-            LblMsg.Text = "大丈夫!" '処理B
+            LblMsg.Text = "大丈夫!"
         End If
 
     End Sub
         Dim ret As String = ""
 
         Dim cnStr As String = System.Configuration.ConfigurationManager.
-            ConnectionStrings("○○○○○○○○ConnectionString").ConnectionString
+            ConnectionStrings("○○○○○○ConnectionString").ConnectionString
 
         Using connection As New SqlConnection(cnStr)
 
             Dim SQL As String
-'特定のFacilityIDの日付が最新のレコードを参照
             SQL = "SELECT date" &
                  " from tbl_valueTest as A" &
                  " WHERE Exists(SELECT * from tbl_valueTest" &
                  " group by FacilityID" &
-                 " having hotel_ID = A.FacilityID and MAX(date) = A._date)" &
+                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                  " and FacilityID = 1 "
 
             Dim command As New SqlCommand(SQL, connection)
 
             Try
+
                 connection.Open()
 
-                Dim result As Object = Nothing
+                Dim result As String = ""
                 result = command.ExecuteScalar()
 
-                If result IsNot Nothing Then ret = CInt(result)
+                If result IsNot "" Then ret = CInt(result)
 
                 connection.Close()
 
 
     End Function
 End Class
-```

SQLserverのdate型データとVBで取得した日付を比較するプログラムを記述したいです

初級者です。初歩的な質問ですが、よろしくお願いします。

テーブルからdate型のデータを(SQLserver2012を使用)取得し、
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、
同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。
(質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
tbl_value.PNG

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。
現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。
(SQL構文で「FacilityID」を「1」と指定した場合)

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。

こちら(date (Transact-SQL))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。

Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                If result IsNot "" Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class
初級者です。初歩的な質問ですが、よろしくお願いします。 

テーブルからdate型のデータを(SQLserver2012を使用)取得し、 
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、 
 同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。 
 (質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
![tbl_value.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/216/tbl_value.PNG)

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。 
 現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。 
 (SQL構文で「FacilityID」を「1」と指定した場合) 

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 

こちら([date (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/bb630352.aspx))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。 

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。 
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。 

```ここに言語を入力
Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています"
        Else
            LblMsg.Text = "大丈夫!"
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try

                connection.Open()

                Dim result As String = ""
                result = command.ExecuteScalar()

                If result IsNot "" Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class

質問を投稿

SQLserverのdate型データとVBで取得した日付を比較するプログラムを記述したいです

初級者です。初歩的な質問ですが、よろしくお願いします。

テーブルからdate型のデータを(SQLserver2012を使用)取得し、
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、
同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。
(質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
tbl_value.PNG

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。
現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。
(SQL構文で「FacilityID」を「1」と指定した場合)

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。

こちら(date (Transact-SQL))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。

Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています" '処理A
        Else
            LblMsg.Text = "大丈夫!" '処理B
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
'特定のFacilityIDの日付が最新のレコードを参照
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having hotel_ID = A.FacilityID and MAX(date) = A._date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try
                connection.Open()

                Dim result As Object = Nothing
                result = command.ExecuteScalar()

                If result IsNot Nothing Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class
初級者です。初歩的な質問ですが、よろしくお願いします。 

テーブルからdate型のデータを(SQLserver2012を使用)取得し、 
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、 
 同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。 
 (質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)

<テーブルの内容>
![tbl_value.PNG](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/216/tbl_value.PNG)

※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。 
 現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。 
 (SQL構文で「FacilityID」を「1」と指定した場合) 

現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。 

こちら([date (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/bb630352.aspx))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。 

※「If day Like dtToday.ToString() Then」の部分は、演算子を「=」でも試しました。 
また、「dtToday」のデータ型を変換するため「.ToString() 」を付与してみました。 

```ここに言語を入力
Imports System.Data.SqlClient

Partial Class dateGet_test
    Inherits System.Web.UI.Page

    Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click

        Dim day As String = GetDate()

        Dim dtToday As DateTime = Date.Today

        If day Like dtToday.ToString() Then
            LblMsg.Text = "今日のデータはすでに格納されています" '処理A
        Else
            LblMsg.Text = "大丈夫!" '処理B
        End If

    End Sub

    'データベースから日付(date型データ)を取得する関数
    Private Function GetDate() As String

        Dim ret As String = ""

        Dim cnStr As String = System.Configuration.ConfigurationManager.
            ConnectionStrings("○○○○○○○○ConnectionString").ConnectionString

        Using connection As New SqlConnection(cnStr)

            Dim SQL As String
'特定のFacilityIDの日付が最新のレコードを参照
            SQL = "SELECT date" &
                 " from tbl_valueTest as A" &
                 " WHERE Exists(SELECT * from tbl_valueTest" &
                 " group by FacilityID" &
                 " having hotel_ID = A.FacilityID and MAX(date) = A._date)" &
                 " and FacilityID = 1 "

            Dim command As New SqlCommand(SQL, connection)

            Try
                connection.Open()

                Dim result As Object = Nothing
                result = command.ExecuteScalar()

                If result IsNot Nothing Then ret = CInt(result)

                connection.Close()

            Catch ex As Exception

            End Try

        End Using

        Return ret

    End Function
End Class
```