Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL数据更新查询_Sql - Fatal编程技术网

SQL数据更新查询

SQL数据更新查询,sql,Sql,我有一个SQL数据表,其中日期以日期格式存储在一列中,即yyyy-mm-dd。我已使用bigint创建了一个新列,并希望编写一个查询以将日期转换为bigint并更新我的新列。我尝试使用CAST并收到一条消息,无法将date显式转换为bigint。有人能帮我把日期(yyyy-mm-dd)转换成bigint的SQL公式吗?我不确定您使用的是哪个品牌的SQL server,但在Microsoft SQL server上,您可以使用convert函数来实现这一点 (编辑)根据评论中的信息添加了一个示例。

我有一个SQL数据表,其中日期以日期格式存储在一列中,即yyyy-mm-dd。我已使用bigint创建了一个新列,并希望编写一个查询以将日期转换为bigint并更新我的新列。我尝试使用CAST并收到一条消息,无法将date显式转换为bigint。有人能帮我把日期(yyyy-mm-dd)转换成bigint的SQL公式吗?我不确定您使用的是哪个品牌的SQL server,但在Microsoft SQL server上,您可以使用convert函数来实现这一点

(编辑)根据评论中的信息添加了一个示例。我仍然假设您正在使用SQL server:

如果表中有一个名为“IssueDate”的datetime列和一个名为IssueDateOAD的新bigint列,则可以运行以下查询:

updatemytable set IssueDateOAD=convert(bigint,IssueDate)+2

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

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


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

我不确定您使用的是哪个品牌的SQL server,但在Microsoft SQL server上,您可以使用convert函数来实现这一点

(编辑)根据评论中的信息添加了一个示例。我仍然假设您正在使用SQL server:

如果表中有一个名为“IssueDate”的datetime列和一个名为IssueDateOAD的新bigint列,则可以运行以下查询:

updatemytable set IssueDateOAD=convert(bigint,IssueDate)+2

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

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


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

您希望的数字目标格式是什么?类似于
yyyymmdd
或其他什么?可能是unix时间戳?请更新您的问题。您期望的数字目标格式是什么?类似于
yyyymmdd
或其他什么?可能是unix时间戳?请更新您的问题。抱歉,我忘记添加我要转换为OADate格式的内容。我尝试过转换,但运气不太好,有没有示例SQL server在1900-01-01 00:00开始,OAdate在1899-12-30 00:00开始,所以选择CONVERT(bigint,getdate())-2应该可以?加2,而不是减。注意到编辑我自己的评论太晚了。我将convert(bigint,expression,getdate())放在-2,但它仍然给出与上面相同的消息抱歉,我忘记添加我要转换为OADate格式的内容。我尝试过转换,但运气不太好,有没有示例SQL server在1900-01-01 00:00开始,OAdate在1899-12-30 00:00开始,所以选择CONVERT(bigint,getdate())-2应该可以?加2,而不是减。注意到现在编辑我自己的评论已经太晚了。我把convert(bigint,expression,getdate())放在-2,但它仍然给出与上面相同的消息