我的应用程序数据库表JOB中有一个列完成日期,其数据类型为16/07/11 09:44:38 INFO storage.MemoryStore: Block broadcast_924 stored as values in memory (estimated size 24.4 KB, free 2.8 MB)
Exception in thread "dag-scheduler-event-loop" java.lang.OutOfMoryError: Java heap space
(非常奇怪),但此列以任意格式存储日期值,如varchar(16)
(例如 - 19841511),{ {1}}(例如 - 19841215),yyyyddmm
(例如 - 01012007)。
我只想将数据转换为统一的日期时间格式,这是SQL Server 2005的默认日期时间格式
yyyymmdd
你能帮我解决一下这个问题吗?
提前致谢!
答案 0 :(得分:0)
好吧,我希望你有一个系统的方法来知道哪一行存储的方式,因为DATETIME
没有默认格式而你的字符串存储的格式错误... 就像在SQL中不存在该格式。没有外界帮助,SQL无法知道。
YYYY-DD-MM
的日期。看起来像自定义工作。 :/ DATETIME
格式没有任何秒数......耶! :(除非您事先知道哪些日期的格式是什么,否则几乎不可能在没有回到发布这些“日期”的来源的情况下对其进行排序。
SELECT CASE WHEN ISDATE('19841511') = 0
THEN SUBSTRING('19841511', 1, 4) + '-' --YEAR
+ SUBSTRING('19841511', 7, 2) + '-' -- MONTH
+ SUBSTRING('19841511', 5, 2) END AS [YYYY-MM-DD]
, CASE WHEN ISDATE('01012007') = 0
THEN SUBSTRING('01012007', 5, 4) + '-' --YEAR
+ SUBSTRING('01012007', 3, 2) + '-' --MONTH
+ SUBSTRING('01012007', 1, 2) END AS [YYYY-MM-DD]
请注意两种格式的区别......并且两种格式都不以SQL Server识别的日期格式存储。
DATETIME2
确实使用您正在寻找的默认格式YYYY-MM-DD hh:mm:ss [.fractional seconds] 希望这至少能帮助你找到正确的答案!