2013-04-25 176 views
1

我有一个SQL日期格式的日期格式的数据表格作为yyyy-mm-dd。我用bigint创建了一个新列,并且希望编写一个查询将日期转换为bigint并更新我的新列。我尝试使用CAST并收到一条消息,我无法明确地将日期转换为bigint。有人可以帮我用SQL公式将日期(yyyy-mm-dd)转换为bigintSQL数据更新查询

+0

什么是您期待的数字目标格式?像“yyyymmdd”或其他不同的东西?也许是一个unix时间戳? – Bjoern 2013-04-25 06:10:39

+0

请更新您的问题。 – Luv 2013-04-25 06:16:54

回答

1

我不确定您正在使用哪种品牌的SQL Server,但在Microsoft SQL Server上可以使用convert函数做到这一点。

(编辑)根据评论中的信息添加了一个示例。我还假设你使用SQL服务器:

如果您的表有一个名为“IssueDate”日期时间列,并呼吁IssueDateOAD新BIGINT列,则可以运行此查询:

update mytable set IssueDateOAD = convert(bigint, IssueDate) + 2

如果IssueDate是一个包含日期格式化字符串的varchar列,您必须先将其转换为日期。对于yyyy-mm-dd,您可以使用convert(datetime, IssueDate, 126)(请参阅您可以通过转换的样式代码文档,126代表我们通过ISO8601格式的日期)

查询包括从varchar到datetime的转换为:

update mytable set IssueDateOAD = convert(bigint, convert(datetime, IssueDate, 126)) + 2

+0

对不起,我忘了补充说我想转换为OADate格式。我已经尝试过CONVERT,但没有多少运气,你有没有例子 – Tim 2013-04-25 06:15:21

+0

SQL服务器在1900-01-01 00:00开始,OAdate从1899-12-30 00:00开始,所以选择convert(bigint,getdate() ) - 2应该做什么? – EventHorizon 2013-04-25 06:19:06

+0

*加* 2,不减号。注意到编辑我自己的评论为时已晚。 – EventHorizon 2013-04-25 06:28:42