首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server日期格式化问题

Server日期格式化问题
EN

Stack Overflow用户
提问于 2016-10-07 13:06:42
回答 5查看 74关注 0票数 1

我有一个带有事务表的Server 2008数据库。有一个字段定义为NVARCHAR(16)。存储的数据是按如下格式格式化的日期和时间: 2016100708593100

我需要编写一个查询,它查看该字段并在两个日期之间提取数据。

代码语言:javascript
复制
select ... from...where convert(varchar,
      convert(datetime,left(a.xact_dati,8)),101) 
      between '9/29/2016' and '10/05/2016'

我尝试过其他转换,但没有返回任何数据。如果我使用>=getdate()-1,我会得到数据,所以我应该看到一些返回的内容。有什么建议吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-10-07 13:18:15

将WHERE条款替换为

代码语言:javascript
复制
... WHERE CONVERT(DATETIME,LEFT(a.xact_dati,8)) BETWEEN '9/29/2016' AND '10/05/2016'
票数 0
EN

Stack Overflow用户

发布于 2016-10-07 13:14:21

假设刚开始

代码语言:javascript
复制
where cast(left('2016100708593100', 8) as date) between '20160929' and '20161005'

注意,这个子句不满意。

票数 0
EN

Stack Overflow用户

发布于 2016-10-07 13:19:14

问题是,您正在尝试与varchar数据进行日期比较。

您可以将初始值转换为datetime,然后返回到varchar。

您可以依赖Sql隐式地将中间参数转换为datetime。

代码语言:javascript
复制
select 'matched',convert(datetime,left('2016100708593100',8),112)
where convert(datetime,left('2016100708593100',8),112) between '2016/09/29' and '2016/10/10'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39918054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档