首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中转换varchar日期格式时的日期时间转换错误

在Server中转换varchar日期格式时的日期时间转换错误
EN

Stack Overflow用户
提问于 2019-03-13 05:45:48
回答 2查看 1.1K关注 0票数 0

我想将此日期时间格式'01/02/2019 12:00:00 AM'转换为

'2019-02-01'格式

我写了这段代码:

代码语言:javascript
复制
declare @start_date datetime;
declare @end_date datetime;

set @start_date = '01/02/2019 12:00:00 AM';
set @end_date = '28/02/2019 12:00:00 AM';

select * 
from test 
where [Global Dimension 1 Code] in ('FIN') 
  and convert(char(10), [Posting Date], 126) between convert(date, convert(char(10), @start_date, 126), 103)  
                                                 and convert(date, convert(char(10), @end_date, 126), 103)

但我搞错了

Msg 242,第16级,状态3,第8行 将varchar数据类型转换为日期时间数据类型会导致超出范围的值。 Msg 241,第16级,第1状态,第10行 从字符串转换日期和/或时间时,转换失败。

但是,当我按照下面的方式运行查询时,它没有出现错误就被执行了。

代码语言:javascript
复制
select * 
from test 
where [Global Dimension 1 Code] in ('FIN') 
  and convert(char(10), [Posting Date], 126) between convert(date, convert(char(10), '01/02/2019 12:00:00 AM', 126), 103) 
                                                 and convert(date, convert(char(10), '28/02/2019 12:00:00 AM', 126), 103)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-13 05:50:53

使用103

代码语言:javascript
复制
SELECT convert(datetime, '01/02/2019 12:00:00 AM', 103)

代码语言:javascript
复制
SELECT convert(char(10), '01/02/2019 12:00:00 AM', 126)
票数 1
EN

Stack Overflow用户

发布于 2019-03-13 05:47:57

使用下面的cast()format() -将运行sql server 2012+

演示

代码语言:javascript
复制
select format(cast('01/02/2019 12:00:00 AM' as date),'yyyy-MM-dd')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55135164

复制
相关文章

相似问题

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