插入到SQL的格式化日期?

时间:2015-12-01 14:46:37

标签: sql-server datetime vb6

我有一个VB6应用程序,我将一组日期插入SQL-SERVER。每次插入一个值时,它都会插入为 1978-12-12 00:00:00.000 。是否可以在INSERT语句中指定您希望如何格式化日期? VB6似乎不识别CONVERT。当我将它加载到像这样的MSHFlexGrid时,我之前做过CONVERT日期:

Convert(varchar,tblClient.DOB, 101)

但我在选择声明中这样做了。 SQL是否允许我以MM / DD / YYYY格式插入一个值,因为我稍后需要该格式。 我需要格式化的原因是因为我将SQL-SERVER2008中的所有表连接到Access以生成报告。所以我需要在SQL-SERVER2008中正确格式化它,因为它动态连接到Access。

3 个答案:

答案 0 :(得分:2)

理想情况下,数据库中列的数据类型设置为Date或DateTime。基本上,如果您想存储日期,请使用日期日期类型。

话虽如此,在VB6中,您通常必须(至少暂时)将日期存储为字符串,因此几乎总会在某处发生字符串到目前为止的转换。

  

SQL允许我以MM / DD / YYYY格式插入值

是。但你不应该这样做。相反,您应该插入格式为“YYYYMMDD”的日期。请注意,没有分隔符。 mm / dd / yyyy的问题在于它可能会被意外地解释为错误的日期。例如,如果您居住在英格兰,则2015年2月1日将被解释为2015年2月1日,如果您居住在美国,则将被解释为2015年1月2日。但是,SQL Server将始终解释20150102和2015年1月2日。

一旦您以数据库中所需的方式存储数据(作为实际日期数据类型),您实际上应该将其作为日期返回到前端(Access或VB6)。在前端,您应该使用format命令来显示日期。 format命令将使用计算机的区域设置以用户希望的方式显示日期。

例如:

txtDateOfBirth.Text = Format(rs.Fields.Item("DOB").value, "Short Date")

以这种方式做事......你应该永远不会遇到日期问题。

答案 1 :(得分:1)

最好的方法是不在数据库服务器中存储格式化日期。

通过使用格式化数据并将其用作报告输入的视图,您可以获得所需的一种方式:

CREATE VIEW myreport
SELECT replace(convert(NVARCHAR, mydate, 106), ' ', '/') from mytable

但我建议在应用程序级别设置日期格式。

答案 2 :(得分:0)

您可以使用VB6s格式函数在将其插入SQL之前准备日期。这是一个例子(在VBA中测试)。

Format(Now(), "YYYY-MM-DD")