首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日期转换varchar(10)

日期转换varchar(10)
EN

Stack Overflow用户
提问于 2014-01-03 00:11:10
回答 3查看 1.5K关注 0票数 1

我有两个表,其中有日期,表1中的数据类型是(datetime,null)。表2中的数据类型是varchar(10)。我正在尝试编写一个查询,该查询将匹配每个表中的两个日期,并根据macth标记它们是否正确。我已经复制了下面的查询,但我总是在转换语法上遇到问题,我正在尝试获取DD/MM/YYY。我非常感谢任何人在围绕日期列包装正确语法方面的帮助。

代码语言:javascript
运行
复制
Select  TBL1.ID,
        TBL1.AccountName,
        TBL1.StartDate,
        TBL2.StartDate,              
        CASE
        WHEN LEFT(TBL1.StartDate,10) = TBL2.StartDate THEN 'Correct' ELSE 'Incorrect' END AS 'Date Check'

FROM TBL1

INNER JOIN TBL2 ON TB1.ID = TBL2.ID

GROUP BY    TBL1.ID,
    TBL1.AccountName,
    TBL1.StartDate,
    TBL2.StartDate
EN

回答 3

Stack Overflow用户

发布于 2014-01-03 00:18:47

代码语言:javascript
运行
复制
CONVERT(datetime,TBL1.StartDate) 

而不是

代码语言:javascript
运行
复制
LEFT(TBL1.StartDate,10)

Left将生成一个字符串,但您需要一个datetime类型来生成=。

票数 2
EN

Stack Overflow用户

发布于 2014-01-03 00:32:56

尝尝这个

代码语言:javascript
运行
复制
CONVERT(varchar(10),Date,103) as StartDate

而不是LEFT(TBL1.StartDate,10)

票数 1
EN

Stack Overflow用户

发布于 2014-01-03 00:42:09

为了进行正确的日期比较,首先需要将varchar类型转换为相应的日期时间表示形式,然后将两个日期转换为通用格式,然后进行比较。

所以改变吧

代码语言:javascript
运行
复制
LEFT(TBL1.StartDate,10) = TBL2.StartDate

代码语言:javascript
运行
复制
CONVERT( varchar(11),TBL1.StartDate,101) = CONVERT(varchar(11),CAST(TBL2.StartDate as DATETIME),101)

将varchar列TBL2.StartDate转换为datetime将检查有效的日期值,如果输入了无效的日期值,则会抛出错误。

另外,要获取dd/mm/yyyy格式的日期列,请使用

代码语言:javascript
运行
复制
Select 
CONVERT(VARCHAR(11),TBL1.StartDate,103),
CONVERT(VARCHAR(11),TBL2.StartDate,103)

More detailed format list here . I suggest bookmarking it,very helpful

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20886895

复制
相关文章

相似问题

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