首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Access SQL Date函数

Access SQL Date函数
EN

Stack Overflow用户
提问于 2017-07-20 01:31:33
回答 3查看 173关注 0票数 0

所以我正在编辑一些SQL代码,并且我刚刚开始学习它。我正在尝试修复一个update查询,以便它用相应的数据库值更新表的value5列。数据库中的值类型是数字,我希望将其转换为日期和地点,并将其放入我的表中。数据库编号是yyyymmdd格式,所以我一直在尝试使用datefrompart(),但这不起作用。有谁有什么想法吗?

代码语言:javascript
复制
UPDATE tbl INNER JOIN dB ON 
(dB.value1= tbl.value1 OR 
dB.value2 =tbl.value2 ) AND 
(LEFT(dB.value3 ,5)=tbl.value3 ) AND 
(dB.value4 =tbl.value4 ) 
SET tbl.value5 = DateFromParts(Left(dB.value5,4),Mid(dB.value5,5,2),Right(dB.value5,2))
WHERE tblInvoice.value5 IS NULL;

当前程序使用代码"SET = dB.value5“来代替(它运行得很好),并且我在测试转换SQL代码(datefrompart())时遇到了另一个问题。因为我要将数字转换为时间/日期,所以我必须进入目标表的设计视图,并将value5列的输入数据类型从数字更改为时间/日期。当我使用转换SQL代码运行查询时,查询会暂停一段时间,并且不会更新任何值,只留下一个空白的value5列。如果我现在想填充原始的数字值,可以将SQL代码改回原来的"SET tbl.value5 = dB.value5",将输入数据类型从time/date改为numbers,然后重新运行程序。查询停止,并且不更新任何值,并且我再次得到空列,即使在修改SQL和表输入数据类型之前,相同的代码给我留下了正确的更新值。我有VBA的背景,我真的很困惑这是如何工作的。任何建议都将不胜感激,谢谢!

EN

回答 3

Stack Overflow用户

发布于 2017-07-20 01:56:16

你有没有尝试使用substring呢?

代码语言:javascript
复制
SELECT DATEFROMPARTS ( left('20101231',4), substring('20101231',5,2), right('20101231',2) ) AS Result;  
票数 0
EN

Stack Overflow用户

发布于 2017-07-20 03:35:49

MS Access (和MS Jet )没有DateFromParts功能。改用DateSerial。

代码语言:javascript
复制
SET tbl.value5 = DateSerial(Left(dB.value5, 4), Mid(dB.value5, 5, 2), Right(dB.value5, 2))
票数 0
EN

Stack Overflow用户

发布于 2017-07-20 18:17:42

不清楚您使用的是T-SQL还是Access SQL。在Access中,您可以使用格式

代码语言:javascript
复制
SET tbl.value5 = CDate(Format(dB.value5, "@@@@\/@@\/@@"))

在T-SQL中,您可以使用类似的方法。

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

https://stackoverflow.com/questions/45197349

复制
相关文章

相似问题

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