![](/img/trans.png)
[英]SQL date conversion HHMMSS.CCCNNNNNN to yyyy-mm-dd hh:mi:ss.mmm
[英]How to convert date in mm/dd/yyyy format to yyyy-mm-dd hh:mi:ss.mmm
我正在將數據插入表中,並且在插入之前我需要檢查數據是否存在。
我有一個由兩列datetime
和int
組成的復合鍵。
在插入之前,我需要檢查表中是否存在具有相同時間和ID的數據。
用戶插入的日期為“ mm / dd / yyyy”。
表格中的datetime
數據如下:“ 2016-01-12 00:00:00.000”。 id字段是int
。
所以,我有一個查詢:
if not exists(select count(*) from table_1 where MyDate = @myDate and id = @id)
insert into table_1 .....
什么是格式化的日期用戶以正確的方式發送到匹配的datetime
以表格的形式?
檢查此sqlfiddle有關如何在查詢中使用不同的日期格式。 可能會幫助您解決它。
我猜想問題是關於基於語法的SQL Server。 代碼段中的問題遠遠超出了日期格式。
一,表達式:
if not exists(select count(*) from table_1 where MyDate = @myDate and id = @id)
永遠不會返回true,因為子查詢總是返回一行加一列。 如果沒有匹配項,則該列包含0
,它確實存在。
您打算:
if not exists(select 1 from table_1 where MyDate = @myDate and id = @id)
其次,如果您明智地選擇讓數據庫強制執行唯一性約束,則無需進行此檢查。 因此,在兩列上定義唯一的索引或約束:
create unique index unq_table_1_id_mydate on table_1(id, MyDate);
現在,數據庫不允許您插入重復的值, if
有必要,則不會。
接下來,我建議您在應用程序層修復日期格式。 YYYY-MM-DD是ISO標准日期格式,非常合理。 但是,如果您不想這樣做,請使用convert()
:
insert into table_1(id, MyDate, .....)
select @id, convert(datetime, @MyDate, 101), . . .
數據庫中的值看起來正確,可以存儲為日期/時間值,因此應該可以正常工作。
您可以使用以下行在SQL Server中將日期轉換為所需的格式:
select FORMAT(@your_date, 'yyyy-MM-dd HH:mm:ss', 'en-US') from Your_Table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.