MS SQL Server:存储mm-dd--年hh-mm-ss-am/pm会终止日期时间



我通过API接收到一个日期时间格式如下的json:2018年12月4日上午11:10:00(所以它就像:mm-dd-year hh-mm-ss-AM/pm(我在MS SQL Server 2016的表中添加了一个日期时间行,并导入了数据。我预计日期时间显示为2018-12-04 11:10:00.000,但在导入过程中,SQL Server会杀死时间部分条目。因此,只存储了2018-12-04 00:00:00.000。我查看了谷歌和stackoverflow,但找到了原因。

有什么建议吗?


编辑

我将json Infos存储在一个变量中,并通过@json/OPENJSON导入数据,然后通过tsql"merge"将其合并到表中。

使用的日期时间格式是所有的集合。永远不要在一个包中这样做。。。它是特定语言、特定文化和非标准的。

但是,幸运的是,您非常接近SQL Server中现有的标准格式。阅读CAST()CONVERT()以及第三个参数。。

试试这个:

SET LANGUAGE ENGLISH;
DECLARE @YourDateTimeString VARCHAR(100)='December 4 2018, 11:10:00 AM';
SELECT CONVERT(DATETIME,REPLACE(@YourDateTimeString,',',''),109);

确保使用一种知道";十二月";。在我的文化(德语(中,这是";Dezember";脚本会失败。。。

这似乎足以取代逗号,以便进入格式109…

如果有任何机会更改输入,请尝试说服发送方使用标准格式,最好是ISO8601(yyyyMMddTHH:mm:ss(。

更新

在测试这个时,我把逗号放错了地方。有了你给出的字符串,即使没有任何替换也能工作:

SET LANGUAGE ENGLISH;
DECLARE @YourDateTimeString VARCHAR(100)='December 4, 2018 11:10:00 AM';
SELECT CONVERT(DATETIME,@YourDateTimeString,109);

最新更新