【问题标题】:Insert only date to table SQL Server仅将日期插入表 SQL Server
【发布时间】:2012-03-16 18:13:57
【问题描述】:

如何只将date 插入date 列?

我试过cast('11-DEC-1999' as DATE)

但我得到了错误:

从字符转换日期和/或时间时转换失败 字符串。

【问题讨论】:

  • 您使用的是哪个版本的 SQL Server?
  • 这个表达式在我的服务器(SQL Server 2008 R2)上没有产生任何错误。也许与区域设置有关?

标签: sql-server-2008 date insert type-conversion


【解决方案1】:

您需要 CONVERT 函数,您可以在其中指定输入格式。

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

【讨论】:

    【解决方案2】:

    只需使用'2012-02-14',应该没问题。无需转换。

    以下是可接受的 alpha 格式列表:来自here

    Apr[il] [15][,] 1996 
    
    Apr[il] 15[,] [19]96 
    
    Apr[il] 1996 [15]
    
    [15] Apr[il][,] 1996 
    
    15 Apr[il][,][19]96 
    
    15 [19]96 apr[il]
    
    [15] 1996 apr[il]
    
    1996 APR[IL] [15]
    
    1996 [15] APR[IL]
    

    您可以将月份指定为完整月份名称的日期数据。例如,当前语言中指定的 April 或 Apr 的月份缩写;逗号是可选的,忽略大小写。

    以下是使用字母日期格式的一些指南:

    用单引号 (') 将日期和时间数据括起来。对于英语以外的语言,请使用 N'

    括号中的字符是可选的。

    如果您仅指定年份的最后两位数字,则小于两位数年份截止配置选项值的最后两位数字的值与截止年份处于同一世纪。大于或等于此选项值的值是截止年份之前的世纪。例如,如果两位数的年份截止值为 2050(默认),则 25 被解释为 2025,而 50 被解释为 1950。为避免歧义,请使用四位数的年份。

    如果缺少日期,则提供该月的第一天。

    当您以字母形式指定月份时,不会应用 SET DATEFORMAT 会话设置。

    【讨论】:

      【解决方案3】:

      将月份指定为 int 并在该日期之后从中获取日期

             DateTime dt=new DateTime(11,12,1999).Date;
      

      【讨论】:

        【解决方案4】:

        CONVERT(日期,'11-DEC-1999')应该会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-21
          相关资源
          最近更新 更多