Это зависит от того, хотите ли вы знать, существует ли она в одной из каталогов в переменной $PATH
или знаете ли вы ее абсолютное местоположение. Если вы хотите узнать, находится ли она в переменной $PATH
, используйте
if which programname >/dev/null; then
echo exists
else
echo does not exist
fi
, в противном случае используйте
if [ -x /path/to/programname ]; then
echo exists
else
echo does not exist
fi
Перенаправление в /dev/null/
в первом примере подавляет вывода программы which
.
У вас нет проблемы с «последними двумя».
Однако у вас есть проблема со всеми из них, но одна точка за другой.
. Ваши даты интерпретируются как ММ-ДД-ГГГГ. Эта интрепретация зависит от культуры вашей системы. Первые три превращаются в неправильные даты, но работают. 4-й перерыв и пятый никогда не выполняются (из-за ошибки до этого).
Таким образом, фактическая ошибка лежит в строке 4.
Всякий раз, когда вы занимаетесь датами, используйте независимые от культуры форматы , Лучше использовать любой из следующих вариантов:
20150730 (=> the 30th of July in 2015)
{d'2015-07-30'} or {t'23:30:59'} or {ts'2015-07-30 23:30:59'}
'2015-07-30T00:00:00'
Я предполагаю, что полученная вами ошибка:
Ошибка конверсии при преобразовании даты и / или времени из символьной строки.
blockquote>только другая ошибка, которую я мог видеть, что вы получаете от данных, которые вы предоставили, является нарушением
FOREIGN KEY
. Однако, поскольку вы указали, что третийINSERT
прошел, а четвертый использует тот же идентификатор внешнего ключа, это не выглядит так.Итак, причина, по которой вы получаете эту ошибку, из-за того, что
DATEFORMAT
не находится в ожидаемом формате.Стандартная форма представления ANSI
DATE
находится в форматеYYYY-MM-DD
. Формат, который вы предоставили, находится вDD-MM-YYYY
, но по умолчанию для вашего сеанса похоже, что он ожидаетMM-DD-YYYY
, что приводит к тому, что следующие даты интерпретируются вINSERT
:Order_ID Order_Date -------------------------- 1 Feb 02 2015 2 May 08 2015 3 Jan 08 2015 4 (30th month?) 07 2015 ^- This is the part that's erring.
Поскольку ваше намерение выглядит как
DD-MM-YYYY
, вы можете использовать два способа:
- Изменение форматов
DATE
в стандарте ANSI:
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '2015-08-02'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '2015-08-05'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '2015-08-01'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '2015-07-30'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '2015-07-01');
- Измените
DATEFORMAT
для транзакции:
Set DateFormat dmy Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '02-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '05-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '01-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '30-07-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '01-07-2015');
Я лично рекомендовал бы первый вариант, так как это лучшая привычка вступать в привязку дат.