【问题标题】:How can I convert date format in SQL Server 2008如何在 SQL Server 2008 中转换日期格式
【发布时间】:2014-12-29 04:51:53
【问题描述】:

我如何在 SQL Server 2008 中使用convert 日期格式?

SELECT 
   Dateadd(DAY, (SELECT MaxCheckday
                 FROM tbl_LibryMemberCategory
                 WHERE IsDeleted = 'N'), Getdate()) 

运行上述查询时出现此错误

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

【问题讨论】:

  • 您能否编辑结果为select MaxCheckday from tbl_LibryMemberCategory where IsDeleted='N'的问题,并且您的查询中没有发生格式转换。
  • MaxCheckDay的返回数据类型是什么?
  • MAXCHECKDAY 返回“7 天”值
  • 我猜你是在 Dateadd 中做这个convert(varchar,Getdate(),103)
  • MAXCHECKDAY 应该是数字 7 而不是字符串“7 DAYS”,请参阅我的答案中的更正查询。

标签: sql-server sql-server-2008


【解决方案1】:

如果没有错,这就是你想要实现的目标

SELECT CONVERT(VARCHAR(20), Dateadd(Day, MaxCheckday, Getdate()), 103)
FROM   tbl_LibryMemberCategory
WHERE  IsDeleted = 'N' 

您的查询中的问题是在转换后执行Dateadd。尝试运行下面的,你会得到同样的错误

SELECT Dateadd(day,1, convert(varchar,Getdate(),103)) 

【讨论】:

  • OP 问他需要转换而不是结果行
  • @agentpx 在Dateadd函数里面转换有什么用
  • SELECT DATEADD(DD, (select MaxCheckday from tbl_LibryMemberCategory where IsDeleted='N'), convert(varchar(20),GETDATE(),103))"这个子查询也使用了"
  • 所以我的答案是正确的?然后在下面标记为已回答
  • @agentpx - 不,尝试运行此查询 SELECT Dateadd(day,1, convert(varchar,Getdate(),103)) 是错误的,即使您的查询正在做同样的事情
【解决方案2】:

MaxCheckDay 只能是 7,而不是“7 DAYS”。

 SELECT Dateadd(dd,(SELECT MaxCheckday
             FROM   tbl_LibryMemberCategory
             WHERE  IsDeleted = 'N'), Getdate()) 

【讨论】:

  • 您不能在 Datepart 参数中使用单引号,这不会解决 OP 的问题,顺便说一句不是我的 DV。仅供参考,您不必在 Datepart 参数中也使用 Double quotes
  • SELECT DATEADD(DD, (select MaxCheckday from tbl_LibryMemberCategory where IsDeleted='N'), convert(varchar(20),GETDATE(),103)) "ERROR GIVEN"
  • 抱歉,现在试试吧
  • DATEADD (datepart , number , date ) ===> 问题出在第二个变量中(不在第一个和第三个变量中),,所以请相应地修改你的答案
  • 包括回答 MaxCheckDay 应该是 7,而不是“7 DAYS”。我无法控制 OP 的数据
猜你喜欢
  • 1970-01-01
  • 2021-10-02
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
相关资源
最近更新 更多