首页
学习
活动
专区
圈层
工具
发布

IIF条件q
EN

Stack Overflow用户
提问于 2018-09-25 06:31:47
回答 1查看 59关注 0票数 1

有人能解释一下这种情况吗?因为我的时间数据不对。例如:我预计sch的起飞时间是15.10,但我得到的是15.01

代码语言:javascript
复制
[Sch Dep Time] = IIF(DATEPART(Hour,[Journey and Details.schdeptime]) < 10 AND DATEPART(Minute,[Journey and Details.schdeptime]) < 10,
                 ('0' + DATEPART(Hour,[Journey and Details.schdeptime]) + ':0' + DATEPART(Minute,[Journey and Details.schdeptime])),
                     IIF(DATEPART(Hour,[Journey and Details.schdeptime]) < 10,
                         ('0' + DATEPART(Hour,[Journey and Details.schdeptime]) + ':' + DATEPART(Minute,[Journey and Details.schdeptime])),
                         (DATEPART(Hour,[Journey and Details.schdeptime]) + ':0' + DATEPART(Minute,[Journey and Details.schdeptime]))))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-25 06:41:26

更新

我突然想到,[Sch Dep Time]应该立即包含存储在[Journey and Details.schdeptime]中的dataTime值的时间分量。为此,您不需要处理特定的日期部分和字符串连接,只需使用convert即可

代码语言:javascript
复制
[Sch Dep Time] = CONVERT(char(5), [Journey and Details.schdeptime], 108)

108样式返回hh:mm:ss (24小时),通过使用char(5),您只需获取字符串- hh:mm的前5个字符。

第一版

你的事情太复杂了。尝试使用旧的right('00' + val, 2)技巧来代替:

代码语言:javascript
复制
[Sch Dep Time] = RIGHT('00' + CAST(DATEPART(Hour,[Journey and Details.schdeptime]) AS VARCHAR(2)), 2) + ':' +
                 RIGHT('00' + CAST(DATEPART(Minute,[Journey and Details.schdeptime]) AS VARCHAR(2)), 2)

扩展:

首先,将前导零连接到所需的字符串。

假设您有一个字符串,表示一个必须始终有4位数字的数字,但它可能是1234或0003 -所以您从执行'0000' + @YourNumber开始。

然后,您使用RIGHT来减少任何不需要的零-假设您现在有000023,但您想要0023 -您可以做RIGHT('000023', 4)来获得最后4个字符。

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

https://stackoverflow.com/questions/52491930

复制
相关文章

相似问题

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