为什么SQL Server(2005)会误解此ISO 8601格式日期?(YYYY-MM-DD)
DECLARE @FromDate DATETIME
SET @FromDate = '2013-01-05'
PRINT @FromDate
-- Prints: May 1 2013 12:00AM
文本格式的日期显然是1月5日,但由于某种原因,SQL Server会将其解释为5月1日。世界上没有YYYY-DD-
MM的日期格式,为什么会发生这种情况?我已经使用这种格式多年了,以前从未遇到过问题,因此我不确定在这种情况下有什么不同。
即使我使用CONVERT强制将其导入ISO8601,它仍然会出错:
DECLARE @FromDate DATETIME
SET @FromDate = CONVERT(VARCHAR, '2013-01-05', 126)
PRINT @FromDate
-- Still prints: May 1 2013 12:00AM
编辑:糟糕-
我使用的是’CONVERT(VARCHAR,上面我的意思是CONVERT(DATETIME),所以这就是为什么没有生效的原因。谢谢@RBarryYoung
但是,如果我在不同的服务器(SQL 2012)上运行上述两个示例中的任何一个,它们都将正确打印’Jan 5 2013 12:00 AM’
这里发生了什么事?我认为将SQL格式与SQL Server一起使用的主要原因之一是它使月份和日期变得毫不含糊?
它仅对于较新的数据类型(date
/ datetime2
)而言是明确的
为了向后兼容,它仍然依赖于dateformat datetime
。
在SQL Server 2012上
SET DATEFORMAT DMY
SELECT CAST('2013-01-05' AS DATETIME), /*May*/
CAST('2013-01-05' AS DATETIME2), /*Jan*/
CAST('20130105' AS DATETIME), /*Jan*/
CAST('20130105' AS DATETIME2) /*Jan*/
yyyymmdd
在处理这些数据类型时,可以将其用作明确的格式。
请参阅日期时间数据类型的最终指南(unseparated
在该文章中称为格式)
问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为
有没有办法将ISO8601日期与Java进行比较?比如,知道字符串日期是否是良好的格式,知道月份是否为负数,以及 我还在搜索如何知道互联网上是否有课程可以比较两个ISO8601日期?比如,如果我有:2000-12-12和1999-05-06。我如何比较这两个日期,使之在年、月和日之间有准确的差异?
问题内容: 前三行工作正常。当我再次尝试将字符串解析为日期时,出现错误。我该如何解决? 错误看起来像这样: 问题答案: 为我工作。在模式末尾使用“ SSSZ”而不是“ SZ”。
问题内容: 如何转换此 格式 ( ISO8601格式 ): 2014-03-13T09:05:50.240Z 为此( MySQL DATE格式 ): 2014-03-13 在PHP中? 问题答案: 尝试这个 完整的日期功能文档可以在这里找到:http : //php.net/manual/en/function.date.php PHP函数“ strtotime”不执行任何其他操作,然后将您的时间
因此,有一个关于web应用程序的部分,用户可以向其中输入事件,web服务将这些事件以以下格式发送到移动应用程序: 我在尝试将字符串转换为日期时遇到了问题,这样我就可以从事件中获得时间(也可以在正确的时区中格式化),例如,这里有一个出现在“2015-03-20T20:00:00-07:00”上的字符串,当我拉动时,时间应该是太平洋时间1PM。但我得到的不是8PM就是3AM(这取决于我是否将UTC缩写
问题内容: SimpleDateFormat: 抛出的异常: 有任何想法吗? 编辑: 感谢您的快速解答。你们都是正确的,我只是错过了SimpleDateFormat文档中的一个关键句子-我可能应该把它称为一天。 问题答案: 从SimpleDateFormat javadocs : 月:如果图案字母的数目为3或更多,则将月份解释为文本;否则,将其解释为数字。 尝试使用“ MMM dd yyyy”之类