【问题标题】:How change format date in SQL Server or how true insert datetime in SQL Server by c#如何在 SQL Server 中更改格式日期或如何通过 c# 在 SQL Server 中真实插入日期时间
【发布时间】:2013-06-13 08:25:53
【问题描述】:

我有字符串 date="20130613070000+1000" 我使用以下方法转换为数据时间:

date_dt = DateTime.ParseExact(date, "yyyyMMddHHmmsszzz", null, DateTimeStyles.None);

结果是 date_dt=13/06/2013 12:00:00 AM

我使用

插入数据库 SQL Server
insert into date (startdate) VALUES ('13/06/2013 12:00:00 PM')

我有一个问题 - 我收到一个错误:

消息 242,第 16 级,状态 3,第 6 行
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

dt_date 转换成 fomat MM/dd/yyy 的解决方案是什么?

【问题讨论】:

  • 不要在代码中的sql语句字符串中插入值! 不要使用SqlParameter
  • cmd.CommandText = "insert into date(startdate) values (@startDate)"; cmd.Parameters.AddWithValue("startDate", date_dt); - 工作完成

标签: c# asp.net sql-server


【解决方案1】:

你是如何插入数据库的?在 C# 代码中,您应该始终使用参数来传递值。框架为您完成转换!

更多信息:http://msdn.microsoft.com/en-us/library/ms254953.aspx

http://msdn.microsoft.com/en-us/library/4f844fc7.aspx

【讨论】:

  • 没有投反对票,但我认为这不能回答问题。即使在您编辑之后。
  • @SonerGönül 相反,我认为这是对这个问题的 答案。如果您发现自己不得不想知道如何解析或格式化日期(或任何其他类型,就此而言),那么这意味着您做错了正确这里要做的是将其表达为参数,而不是文字
  • @SonerGönül 问题是(也)“如何通过 c# 插入日期时间”毫无疑问,标准方法是通过 SqlParameters。
【解决方案2】:

将日期作为字符串插入时,您可以使用 ISO 8601 格式。这应该适用于所有文化:

date_dt.ToString("s")

示例输出:

2013-06-13T10:29:57

或者,您可以使用带有参数的 SqlCommand 来为您进行转换。

【讨论】:

  • 不是这个我需要按日期时间类型插入ino sql,但我需要在sql中的日期时间格式和asp.net或c#中的日期时间格式之间相等
  • 我不确定我是否明白你的意思。 SQL 服务器的输出是一个 DateTime 实例。如果您在服务器上的日期值也是 DateTime 实例,那么比较它们应该很容易吗?如果您支持多个时区,您可能需要与 UTC 相互转换。
【解决方案3】:

您可以使用以下转换函数将您的日期字符串转换为 SQL 日期时间格式

DECLARE @MyDate DATETIME 
SET @MyDate = CONVERT(DATETIME, '13/06/2013 12:00:00 PM', 103) 
INSERT INTO date (startdate) VALUES (@MyDate)

在此处找到与此相关的非常有用的书签链接。 http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

【讨论】:

  • 由于该值来自调用代码(并且在某些静态 sql 中不是固定值),IMO 最好首先参数化该值,而不是连接它变成了文字。参数是强类型的 - 不需要潜在的模棱两可的格式/解析步骤。它也允许更好的查询计划重用。
【解决方案4】:
You can insert into database SQL Server using

insert into date (startdate) VALUES ('06/13/2013 12:00:00 PM')

the format for datetime is mm/dd/yy...

【讨论】:

    【解决方案5】:

    如果你放入sql查询,那么你可以使用下面的:

    select CONVERT(VARCHAR(10),getdate(),101)
    

    希望对你有所帮助。 :)

    【讨论】:

    • 有一个错误:getdate?
    • getdate() 返回当前日期。他正在尝试插入其他数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多