【发布时间】:2014-04-07 21:04:05
【问题描述】:
基本上,我在修复“日期”以及它如何在 SQL 中保存时遇到问题。它现在可以工作,它插入到表格等中,但不是我真正希望它插入的格式。它插入为MM/dd/yyyy(据我所知是美国方式),但我需要以我们在英国使用的格式放置,所以是的,它需要显示为dd/MM/yyyy(03/05/2014) .
实际上是否可以将其转换为我的不同时区?如果可以,它是如何完成的? (我的意思是指导我,否则我不会学习。)
这是我的代码,说明在将我的插入插入到实际的 SQL 数据库中时它的表现如何。
Protected Sub OkBtn_Click(sender As Object, e As System.EventArgs) Handles OkBtn.Click
Try
' Dim DayNo As Integer = 0
' Dim DateNo As Integer = 0
' Dim StartingDay As Integer = 0
Dim ThisDay As Date = Date.Today
' Dim Week As Integer = 1
' StartingDay = ThisDay.AddDays(-(ThisDay.Day - 1)).DayOfWeek
' DayNo = ThisDay.DayOfWeek
' DateNo = ThisDay.Day
' Week = Fix(DateNo / 7)
' If DateNo Mod 7 > 0 Then
'Week += 1
' End If
' If StartingDay > DayNo Then
'Week += 1
' End If
'Dim ThisWeek As String
' ThisWeek = Week
Dim ThisUser As String
ThisUser = Request.QueryString("")
If ThisUser = "" Then
ThisUser = "Chris Heywood"
End If
connection.Open()
command = New SqlCommand("Insert Into FireTest([Date],[Type],[Comments],[Completed By]) Values(@Date,@Type,@Comments,@CompletedBy)", connection)
command.Parameters.AddWithValue("@Date", ThisDay.ToString)
command.Parameters.AddWithValue("@Type", DropDownList1.SelectedValue)
command.Parameters.AddWithValue("@Comments", TextBox2.Text)
command.Parameters.AddWithValue("@CompletedBy", ThisUser)
'command.Parameters.AddWithValue("@Week", ThisWeek)
command.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Please make sure all fields are filled in!")
End Try
connection.Close()
Response.Redirect("~/Production/Navigator.aspx")
End Sub
编辑:我已经编辑了它插入 & 的方式,但它仍然没有显示为 dd/MM/yyyy。
【问题讨论】:
-
不要将日期存储为字符串!将列的类型更改为
date(或datetime用于旧版本的 SQL),并在客户端中进行格式化。 -
当使用
AddWithValue时,附加值的类型应该反映DB中的列类型。因此,在您的情况下,您名为 [Date] 的 sql 列是“字符串”列? -
Richard ,在 SQL 中它是 Date 类型,这是我试图将其保存为字符串时出错的地方吗?
-
任何 rdbms 都可以存储一个
datetime,那么为什么要使用字符串呢?此外,服务器上的MessageBox没有多大意义。您还应该使用using-statement 进行连接,以确保它尽快关闭,即使出现错误。 -
@Kallumasaurus:是的,如果SQL类型是
date,那么你需要把它作为日期传递。
标签: sql sql-server vb.net date datetime